[U[`@\ Tv
-----------------------------
1 [U[`@\ (UDF) Tvt@C ̖ړI
2 WindowsłUDF Tv𓮍삷@
3 UNIXłUDF Tv𓮍삷@


1 [U[`@\ (UDF) Tvt@C̖ړI
--------------------------------------------------
    Tv: UDF\md5

    ړI:    
        ̃TvvÓAMD5DATA MD5FILE 2udfs(user-defined function)`.́AXgOobt@܂ file relativelypɁA message-digest fingerprint (checksum)vZ. Md5́ACӂ̒̃bZ[W128-bit"fingerprint"ɃAEgvbgA "message digest"쐬. L܂ނQ̃bZ[WAOɐꂽbZ[W̗v쐬邱Ƃ́ARs[^ɍƐ. MD5 ASÝAeʃt@CRSÂ悤ȌJԍɓ݂private (secret) key܂Ƃ߂OɈSȕ@ňkfW^AvP[Vpɍ쐬ꂽ.     


    Tv: UDF\regex

    ړI:
        ̃TvvÓAsyntax semantics Perl 5 ɌȂ߂M[\T|[gREGEXP udf ƒ`


2 WindowsłUDF Tv@
-----------------------------------
    dvȂm点:
        VC ++̃[ÚAȉ̎菇dll make file쐬ł.AA structure member alignment 4 bytes ɐݒ肷Kv. 

    쐬:
        1. Microsoft C Compilergp (i.e. Visual C ++ 6.0 ܂͌݊̂ 
           compiler).
        2. create 'Dynamic-Link Library'(DLL)I.
        3. 'Include Files' Search Path'C:\DBMaker\5.4\Include' y'C:\DBMaker\5.4\Samples\udf\
           md5'.
        4. 'Library Modules' Search Path'C:\DBMaker\5.4\LIB'.
        5. Link Library Modules'dmudf.lib'.
        6. md5.dll fileIэ쐬.

   @md5̎s:
        1. f[^x[XT[oɃL[[hDB_LBDIR݁AfBNg肷.j 

            [DBSAMPLE5]
            DB_LBDIR=C:\DBMaker\5.4samples\database; for WIN32     

        2. f[^x[Xlib directory md5.dll file Rs[.

        3. database client, start dmSQLX^[g. 

        4. SQL R}hsDBSAMPLE5 f[^x[Xɐڑ.

             dmSQL> connect to 'DBSAMPLE5' 'SYSADM';

        5. [U`t@NV쐬.

             dmSQL> create function md5.MD5DATA(string) returns string;
             dmSQL> create function md5.MD5FILE(string) returns string;

        6.t@NVR[.

             dmSQL> select md5data('a string') from SYSINFO;
             dmSQL> select md5file('a full path filename') from SYSINFO; 

   @regexs:
        1. [U`t@NV쐬.

             dmSQL> create function regex.REGEXP(string, string) returns int;

        2. t@NVR[.
           'trigger'܂ރe[uXgAbv.       
           
             dmSQL> select TABLE_NAME from SYSTABLE 
                     where regexp(TABLE_NAME,'/trigger/')=1; 
           
            'trigger'܂܂Ȃe[uXgAbv.
             dmSQL> select TABLE_NAME from SYSTABLE 
                     where regexp(TABLE_NAME,'/trigger/i')=1;
           
           e[uԍŏÎXgAbv.
           
             dmSQL> select TABLE_NAME from SYSTABLE 
                     where regexp(TABLE_NAME,'/ \d$/')=1; 
           
           @ a, b,܂ cŃe[un܂̂XgAbv.
           
             dmSQL> select TABLE_NAME from SYSTABLE 
                     where regexp(TABLE_NAME,'/^[a-c]/i')=1; 


3 UNIXłUDF Tvs@
--------------------------------
    쐬:
        1. ǂ compilermF.j 'cc'.

        2. 'dbmaker'Ƀz[fBNg'inlcude' fBNginclude pathݒ肵AC programcompile.j

             % cc -fpic  -I. -I/APP_HOME/include -c md5c.c md5hl.c

        3.NCAgT[oŃ[hĂVFAW[md5.oN. j :

             % ld -Bshareable -o $@ md5c.o md5hl.o

   md5s:
        1. R}h'make'VFɓ͂

             % make

           md5.so  md5test ̂Q̃oCit@C쐬. md5.so dbmaker f[^x[XT[oɂ쐬ꂽVFAW[ŁA 
        @@md5test development time s\ȃt@Cł.l̊ɈڂfobO邱Ƃł.

        2. f[^x[XT[oɃL[[hDB_LBDIRAfBNg肷.j 

            [DBSAMPLE5]
            DB_LBDIR=/APP_HOME/samples/DATABASE

        3. md5Rs[t@C쐬邱ƂŁAf[^x[XlibfBNgl.

        4. f[^x[XNCAgdmsqlcX^[g
        
             % /APP_HOME/bin/dmsqlc

        5.@SQL R}hsADBSAMPLE5 f[^x[Xɐڑ.

             dmSQL> connect to 'DBSAMPLE5' 'SYSADM';

        6. [U`t@NV쐬.

             dmSQL> create function md5.MD5DATA(string) returns string;
             dmSQL> create function md5.MD5FILE(string) returns string;

        7. t@NVR[.

             dmSQL> select md5data('a string') from SYSINFO;
             dmSQL> select md5file('a full path filename') from SYSINFO; 

    regexs:
        1. VF'make'͂

             % cd pcre
             % make

           library file 'libpcre.a' 쐬. ́A Perl-Compatible 
           Regular Expressions }b`OGW.

             % cd ..
             % make

           regex.so regex Qbinary file 쐬. regex.so  dbmaker f[^x[XT[ogpVFAW[ŁAregex  development time executable t@C. ̊Ƀg[XfobO邱Ƃł.

        2. f[^x[XT[o, L[[hDB_LBDIRfBNg肷.j 

            [DBSAMPLE5]
            DB_LBDIR=/APP_HOME/samples/DATABASE

        3. Makefile will copy the regex.so file to a lib directory of 
           Database for you.

        4. f[^x[XNCAgdmsqlcX^[g.
        
             % /APP_HOME/bin/dmsqlc

        5. SQL command sDBSAMPLE5 f[^x[Xɐڑ.

             dmSQL> connect to 'DBSAMPLE5' 'SYSADM';

        6. [U`t@NV쐬.

             dmSQL> create function regex.REGEXP(string, string) returns int;

        7. t@NVR[.
             'trigger'܂ރe[uXgAbv.       
           
             dmSQL> select TABLE_NAME from SYSTABLE 
                     where regexp(TABLE_NAME,'/trigger/')=1; 
           
           'trigger'܂܂Ȃe[uXgAbv.
           
             dmSQL> select TABLE_NAME from SYSTABLE 
                     where regexp(TABLE_NAME,'/trigger/i')=1;
           
           e[uԍŏÎXgAbv.
           
             dmSQL> select TABLE_NAME from SYSTABLE 
                     where regexp(TABLE_NAME,'/\d$/')=1; 
           
          @a, b,܂ cŃe[un܂̂XgAbv.
           
             dmSQL> select TABLE_NAME from SYSTABLE 
                     where regexp(TABLE_NAME,'/^[a-c]/i')=1; 

