Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How do set the library/schema list #30

Closed
abmusse opened this issue Jun 1, 2018 · 6 comments
Closed

How do set the library/schema list #30

abmusse opened this issue Jun 1, 2018 · 6 comments
Labels
bug Something isn't working minor

Comments

@abmusse
Copy link
Member

abmusse commented Jun 1, 2018

Original report by Kristopher Baehr (Bitbucket: krisbaehr, GitHub: krisbaehr).


How can we set the library/schema list for a particular connection or statement? I'm having difficulty finding examples or documentation. To clarify, this is not the default library when one is not provided, but the full list ie. "LIB1, LIB2, LIB3." Thanks!

@abmusse
Copy link
Member Author

abmusse commented Jun 4, 2018

Original comment by Aaron Bartell (Bitbucket: aaronbartell, GitHub: aaronbartell).


@krisbaehr , check out this slide from my "Node.js All The Things" presentation.

This tells the connection to use the *LIBL as specified by the user's *JOBD. Not necessarily exactly what you're asking for, but hopefully it gives some addtl insight.

@abmusse
Copy link
Member Author

abmusse commented Jun 4, 2018

Original comment by Kristopher Baehr (Bitbucket: krisbaehr, GitHub: krisbaehr).


Thanks, @aaronbartell . I'm already specifying the SQL_ATTR_DBC_SYS_NAMING connection attribute, but it helps to know exactly what that's doing. It seems like this would be a nice feature to have at some point. I think the workaround would be to control the library list by specifying different users on the connection.

@abmusse
Copy link
Member Author

abmusse commented Aug 1, 2018

Original comment by Jesse G (Bitbucket: ThePrez, GitHub: ThePrez).


@abmusse, is there yet a way to do this?

I suspect at least a call to QCMDEXC with a "CHGLIBL" command could do it. Will you look into that?

@abmusse
Copy link
Member Author

abmusse commented Aug 1, 2018

@ThePrez Will do!

@abmusse
Copy link
Member Author

abmusse commented Jan 1, 2019

@krisbaehr

Calling QSYS2.QCMDEXC(?) stored procedure to execute the CHGLIBL CL command will change your library list.

For example:

const { dbstmt, dbconn, IN, CHAR } = require('idb-connector');

let conn = new dbconn();

conn.conn('*LOCAL');

let changeLibStmt = new dbstmt(conn),
    qcmdexc = 'CALL QSYS2.QCMDEXC(?)',
    // you can set multiple libs
    changeLibParam = 'CHGLIBL (TESTLIB TESTLIB2)';

changeLibStmt.prepare(qcmdexc, (error) => {
    if (error) {
        throw error;
    }
    changeLibStmt.bindParam([[changeLibParam, IN, CHAR]], error => {
        if (error) {
            throw error;
        }
        changeLibStmt.execute((out, error) => {
            if (error) {
                throw error;
            }
            changeLibStmt.close();
        });
    });
});

You can view current library list from qsys2.library_list_info view.

For Example:

const {dbstmt, dbconn} = require('idb-connector');

let conn = new dbconn();

conn.conn('*LOCAL');

let viewLibStmt = new dbstmt(conn),
   viewLibList = 'SELECT * from qsys2.library_list_info';

viewLibStmt.exec(viewLibList, (result, error) => {
    if (error){
        throw error;
    }
    console.log(result)
    viewLibStmt.close();
});

Before CHGLIBL command:

[ { ORDINAL_POSITION: '1',
    SCHEMA_NAME: 'QSYS',
    SYSTEM_SCHEMA_NAME: 'QSYS',
    TYPE: 'SYSTEM',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: 'System Library' },
  { ORDINAL_POSITION: '2',
    SCHEMA_NAME: 'QSYS2',
    SYSTEM_SCHEMA_NAME: 'QSYS2',
    TYPE: 'SYSTEM',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: 'System Library for CPI\'s' },
  { ORDINAL_POSITION: '3',
    SCHEMA_NAME: 'QHLPSYS',
    SYSTEM_SCHEMA_NAME: 'QHLPSYS',
    TYPE: 'SYSTEM',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: null },
  { ORDINAL_POSITION: '4',
    SCHEMA_NAME: 'QUSRSYS',
    SYSTEM_SCHEMA_NAME: 'QUSRSYS',
    TYPE: 'SYSTEM',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: 'System Library for Users' },
  { ORDINAL_POSITION: '5',
    SCHEMA_NAME: 'QGPL',
    SYSTEM_SCHEMA_NAME: 'QGPL',
    TYPE: 'USER',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: 'General Purpose Library' },
  { ORDINAL_POSITION: '6',
    SCHEMA_NAME: 'QTEMP',
    SYSTEM_SCHEMA_NAME: 'QTEMP',
    TYPE: 'USER',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: null },
  { ORDINAL_POSITION: '7',
    SCHEMA_NAME: 'QDEVELOP',
    SYSTEM_SCHEMA_NAME: 'QDEVELOP',
    TYPE: 'USER',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: null },
  { ORDINAL_POSITION: '8',
    SCHEMA_NAME: 'QBLDSYS',
    SYSTEM_SCHEMA_NAME: 'QBLDSYS',
    TYPE: 'USER',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: null },
  { ORDINAL_POSITION: '9',
    SCHEMA_NAME: 'QBLDSYSR',
    SYSTEM_SCHEMA_NAME: 'QBLDSYSR',
    TYPE: 'USER',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: null } ]

After CHGLIBL

[ { ORDINAL_POSITION: '1',
    SCHEMA_NAME: 'QSYS',
    SYSTEM_SCHEMA_NAME: 'QSYS',
    TYPE: 'SYSTEM',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: 'System Library' },
  { ORDINAL_POSITION: '2',
    SCHEMA_NAME: 'QSYS2',
    SYSTEM_SCHEMA_NAME: 'QSYS2',
    TYPE: 'SYSTEM',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: 'System Library for CPI\'s' },
  { ORDINAL_POSITION: '3',
    SCHEMA_NAME: 'QHLPSYS',
    SYSTEM_SCHEMA_NAME: 'QHLPSYS',
    TYPE: 'SYSTEM',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: null },
  { ORDINAL_POSITION: '4',
    SCHEMA_NAME: 'QUSRSYS',
    SYSTEM_SCHEMA_NAME: 'QUSRSYS',
    TYPE: 'SYSTEM',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: 'System Library for Users' },
  { ORDINAL_POSITION: '5',
    SCHEMA_NAME: 'TESTLIB',
    SYSTEM_SCHEMA_NAME: 'TESTLIB',
    TYPE: 'USER',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: null },
  { ORDINAL_POSITION: '6',
    SCHEMA_NAME: 'TESTLIB2',
    SYSTEM_SCHEMA_NAME: 'TESTLIB2',
    TYPE: 'USER',
    IASP_NUMBER: '0',
    TEXT_DESCRIPTION: null } ]

@abmusse
Copy link
Member Author

abmusse commented Jan 16, 2019

Original comment by Kristopher Baehr (Bitbucket: krisbaehr, GitHub: krisbaehr).


@abmusse Perfect, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working minor
Projects
None yet
Development

No branches or pull requests

1 participant