[Monetdb-developers] [Monetdb-pf-checkins] pathfinder/src/sqlhelpers/db2tools common.inc, XQuery_0-20, NONE, 1.1.2.1 load, XQuery_0-20, NONE, 1.1.2.1 table, XQuery_0-20, NONE, 1.1.2.1

Stefan Manegold Stefan.Manegold at cwi.nl
Mon Sep 24 11:19:09 CEST 2007


To ensure a smooth finalization of our combined effort to get the upcoming
release out "as fast as possible" and without any self-made hurdles, I
assume that adding these new "feature(s)" in the *release branch* has been
coordinated with Sjoerd, right?
(In particular wrt. how/where they need to be added to the source and
in particular binary packages, documentation, and which platforms they are
targeted for (Windows??).)

Greetings from Vienna,

Stefan

On Mon, Sep 24, 2007 at 09:10:33AM +0000, Manuel Mayr wrote:
> Update of /cvsroot/monetdb/pathfinder/src/sqlhelpers/db2tools
> In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv18874
> 
> Added Files:
>       Tag: XQuery_0-20
> 	common.inc load table 
> Log Message:
> 
> 
> Shell scripts to create tables, and load content for SQL-backend
> 
> 
> --- NEW FILE: load ---
> #!/bin/sh
> 
> THIS=${0}
> THISDIR=${0%/*}
> THISFILE=${0##*/}
> DB2=`which db2`
> 
> source common.inc
> 
> ################################################
> # FUNCTIONS
> 
> function load_table {
>     #check parameter list
>     if [ ${#} -ne 3 ]; then
>        error "Usage: ${0} <file> <schema> <table>"
>     fi
> 
>     SCHEMA=${2}
>     FILE=${1}
>     TABLE=${3}
>     
>     # set schema to ours 
>     ${DB2} "set current schema ${SCHEMA}"
> 
>     # create the names-table 
>     ${DB2} -t<<EOT
> LOAD FROM ${FILE} OF DEL
>     MODIFIED BY DELPRIORITYCHAR 
>     REPLACE INTO ${TABLE} 
>     NONRECOVERABLE
>     INDEXING MODE rebuild;
> EOT
> 
>     ${DB2} "SET INTEGRITY FOR ${TABLE} IMMEDIATE CHECKED" 
>     EFLAG=${?}
>     return ${EFLAG}
> }
> 
> function print_help () {
>     out    "Pathfinder XQuery"
>     out    "(c) Database Group, Technische Universitaet Muenchen"
>     out    "" 
>     out    "Usage: ${THISFILE} (create|drop) <db> <schema> <file>"
>     out    ""
>     out -e "\t<db>:\t\tName of the Database the content should be placed/removed."
>     out -e "\t<schema>:\tName of the Schema the content should be placed/removed."
>     out -e "\t<names_file>:\tNames file"
>     out -e "\t<file>:\tEncoded document"
> }
> 
> ################################################
> # MAIN
> 
> if [ $# -ne 4 ]; then
>     print_help;
>     exit 0;
> fi     
> 
> DATABASE=${1}
> SCHEMA=${2}
> NFILE=${3}
> LFILE=${4}
> 
> ${DB2} "connect to ${DATABASE}"
> 
> EFLAG=${?}
> out -ne "Connecting to database ${DATABASE} ... "; fail $EFLAG; 
> 
> test ${EFLAG} -ne 0 && exit 1;
> 
> load_table "${NFILE}" "${SCHEMA}" "${TAB_NAMES}";
> EFLAG=${?};
> out -ne "Loading ${SCHEMA}.${TAB_NAMES} ... "; fail ${EFLAG};
> 
> load_table ${LFILE} "${SCHEMA}" "${TAB_DOC}";
> EFLAG=${?};
> out -ne "Loading ${SCHEMA}.${TAB_DOC} ... "; fail ${EFLAG};
> 
> ${DB2} "terminate"
> 
> --- NEW FILE: table ---
> #!/bin/sh
> 
> THIS=${0}
> THISDIR=${0%/*}
> THISFILE=${0##*/}
> DB2=`which db2`
> 
> source common.inc
> 
> ################################################
> # FUNCTIONS
> 
> function create_names {
>     #check parameter list
>     if [ ${#} -ne 2 ]; then
>        error "Usage: ${0} <schema> <tabname>"
>     fi
> 
>     SCHEMA=${1}
>     TABNAME=${2}
>     
>     # set schema to ours 
>     ${DB2} "set current schema ${SCHEMA}"
> 
>     # create the names-table 
>     ${DB2} -t<<EOT
> CREATE TABLE ${TABNAME}(nameid INT NOT NULL PRIMARY KEY,
>                    name   VARCHAR(32) NOT NULL);
> EOT
>     EFLAG=${?}
>     return ${EFLAG}
> }
> 
> function create_doc {
>     #check parameter list
>     if [ ${#} -ne 3 ]; then
>         error "Usage: ${0} <schema> <tabname> <namesname>"
>     fi
> 
>     SCHEMA=${1}
>     TABNAME=${2}
>     NAMESNAME=${3}
> 
>     ${DB2} "set current schema ${SCHEMA}"
>     
>     ${DB2} -t<<EOT
> CREATE TABLE ${TABNAME}(pre INT NOT NULL PRIMARY KEY,
>                  size INT NOT NULL,
>                  level SMALLINT NOT NULL,
>                  kind SMALLINT,
>                  nameid INT,
>                  value VARCHAR(100),
>                  guide INT NOT NULL,
>                  FOREIGN KEY (nameid) references ${NAMESNAME}(nameid));
> EOT
>     EFLAG=${?}
>     return ${EFLAG}
> }
> 
> function create_xmldoc {
>     #check parameter list
>     if [ ${#} -ne 4 ]; then
>         error "Usage: ${0} <schema> <tabname> <docname> <namesname>"
>     fi
> 
>     SCHEMA=${1}
>     TABNAME=${2}
>     DOCNAME=${3}
>     NAMENAME=${4}
> 
>     ${DB2} "set current schema ${SCHEMA}"
> 
>     ${DB2} -t<<EOT
> CREATE VIEW ${TABNAME}(pre, size, level, kind, guide,
>                    nameid, value, name) AS
> (SELECT pre, size, level, kind, guide,
>         doc.nameid, value, name
>    FROM ${DOCNAME} AS doc
>         LEFT OUTER JOIN
>         ${NAMESNAME} AS names
>           ON doc.nameid = names.nameid);
> EOT
>     EFLAG=${?}
>     return ${EFLAG}
> }
> 
> function drop_table {
>     #check parameter list
>     if [ ${#} -ne 1 ]; then
>         error "Usage: ${0} <table>"
>     fi
> 
>     TABLE=${1}
> 
>     ${DB2} "drop table ${TABLE}" 
> }
> 
> function drop_names {
>     #check parameter list
>     if [ ${#} -ne 1 ]; then
>         error "Usage: ${0} <schema>"
>     fi
> 
>     SCHEMA=${1}
> 
>     ${DB2} "set current schema ${SCHEMA}"
>     drop_table "${TAB_NAMES}" 
>     EFLAG=${?}
>     return ${EFLAG}
> }
> 
> function drop_doc {
>     #check parameter list
>     if [ ${#} -ne 1 ]; then
>         error "Usage: ${0} <schema>"
>     fi
> 
>     SCHEMA=${1}
> 
>     ${DB2} "set current schema ${SCHEMA}"
>     drop_table "${TAB_DOC}"
>     EFLAG=${?}
>     return ${EFLAG}
> }
> 
> function drop_xmldoc {
>     #check parameter list
>     if [ ${#} -ne 1 ]; then
>         error "Usage: ${0} <schema>"
>     fi
> 
>     SCHEMA=${1}
> 
>     ${DB2} "set current schema ${SCHEMA}"
>     ${DB2} "drop view xmldoc"
>     EFLAG=${?}
>     return ${EFLAG}
> }
> 
> function print_help () {
>     out    "Pathfinder XQuery"
>     out    "(c) Database Group, Technische Universitaet Muenchen"
>     out    "" 
>     out    "Usage: $THISFILE (create|drop) <db> <schema>" 
>     out    ""
>     out -e "\t(create|drop):\teither create or drop the tables "
>     out -e "\t<db>:\t\tName of the Database the tables should be placed/removed."
>     out -e "\t<schema>:\tName of the Schema the tables should be placed/removed."
> }
> 
> ################################################
> # MAIN
> 
> if [ $# -ne 3 ]; then
>     print_help;
>     exit 0;
> fi     
> 
> OPTION=${1}
> DATABASE=${2}
> SCHEMA=${3}
> 
> ${DB2} "connect to ${DATABASE}"
> EFLAG=$?
> out -ne "Connecting to database ${DATABASE} ... "; fail $EFLAG; 
> test $EFLAG -ne 0 && exit 1;
> 
> case ${OPTION} in
>    create) create_names ${SCHEMA} ${TAB_NAMES};
>            EFLAG=${?};
>            out -ne "Creating ${SCHEMA}.${TAB_NAMES} ... "; fail ${EFLAG};
> 
>            create_doc ${SCHEMA} ${TAB_DOC} ${TAB_NAMES};
>            EFLAG=${?};
>            out -ne "Creating ${SCHEMA}.${TAB_DOC} ... "; fail ${EFLAG};
> 
>            create_xmldoc ${SCHEMA} ${TAB_XMLDOC} ${TAB_DOC} ${TAB_NAMES};
>            EFLAG=${?};
>            out -ne "Creating ${SCHEMA}.${TAB_XMLDOC} ... "; fail ${EFLAG};
>            ;;
> 
>    drop)   drop_xmldoc ${SCHEMA}
>            EFLAG=${?}
>            out -ne "Dropping ${SCHEMA}.${TAB_XMLDOC} ... "; fail ${EFLAG};
> 
>            drop_doc ${SCHEMA}
>            EFLAG=${?}
>            out -ne "Dropping ${SCHEMA}.${TAB_DOC} ... "; fail ${EFLAG};
> 
>            drop_names ${SCHEMA}
>            EFLAG=${?}
>            out -ne "Dropping ${SCHEMA}.${TAB_NAMES} ... "; fail ${EFLAG};
>            ;;
>    *)      print_help; 
>            exit 1;
>            ;;
> esac
> ${DB2} "terminate"
> 
> --- NEW FILE: common.inc ---
> DEBUG=0
> 
> TAB_NAMES="names"
> TAB_DOC="doc"
> TAB_XMLDOC="xmldoc"
> 
> DB2=`which db2`
> 
> function fail {
>     if [ ${#} -ne 1 ]; then
>         error "Wrong use of fail"
>     fi
> 
>     if [ ${1} -eq 0 ]; then
>         out "Success"
>         return 0;
>     else
>         out "Failed"
>         return 0;
>     fi
> }
> 
> function error {
>     if [ ${#} -ne 1 ]; then
>         echo "Wrong use of error"
>         exit 1;
>     fi
>     echo -e "Error: ${1}"
>     exit 1
> }
> 
> function warning
> {
>     if [ ${#} -ne 1 ]; then
>         error "Wrong use of debug"
>     fi
>     echo -e "Warning: ${1}"
> }
> 
> function out {
>     if [ ${#} -eq 1 ]; then
>         echo -e "${1}"
>         return 0;
>     fi
>     if [ ${#} -eq 2 ]; then
>         echo "${1}" "${2}"
>     else
>        error "wrong use of out"
>     fi
> }
> 
> function debug {
>     if [ ${#} -ne 1 ]; then
>         error "Wrong use of debug"
>     fi
>     test ${DEBUG} -eq 1 && echo -e "Debug: ${1}"
> }
> 
> function LOG1 {
>     prompt="\n# `date +%H:%M:%S` >  "; { echo -en "$prompt$prompt" ; echo -n "$*" ; echo -en "$prompt\n\n" ; } >&2;
> }
> 
> function getAbsolutePath {
>     if [ -z ${1} ]; then
>        error "Wrong use of ${0}";
>     fi
> 
>     PATH_=${1%/*}
>     FILE_=${1##*/}
> 
>     echo `cd ${PATH_} 2> /dev/null && pwd || echo ${PATH_}`/${FILE_}
> }
> 
> test -z $DB2  && error "DB2 not available";
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2005.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Monetdb-pf-checkins mailing list
> Monetdb-pf-checkins at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
> 

-- 
| Dr. Stefan Manegold | mailto:Stefan.Manegold at cwi.nl |
| CWI,  P.O.Box 94079 | http://www.cwi.nl/~manegold/  |
| 1090 GB Amsterdam   | Tel.: +31 (20) 592-4212       |
| The Netherlands     | Fax : +31 (20) 592-4312       |




More information about the developers-list mailing list