C:\xampp2_not used\php\pear\adodb\datadict\datadict-sapdb.inc.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php

/**
  V4.50 6 July 2004  (c) 2000-2012 John Lim (jlim#natsoft.com). All rights reserved.
  Released under both BSD license and Lesser GPL library license. 
  Whenever there is any discrepancy between the two licenses, 
  the BSD license will take precedence.
    
  Set tabs to 4 for best viewing.
  
  Modified from datadict-generic.inc.php for sapdb by RalfBecker-AT-outdoor-training.de
*/

// security - hide paths
if (!defined('ADODB_DIR')) die();

class 
ADODB2_sapdb extends ADODB_DataDict {
    
    var 
$databaseType 'sapdb';
    var 
$seqField false;    
    var 
$renameColumn 'RENAME COLUMN %s.%s TO %s';
     
     function 
ActualType($meta)
    {
        switch(
$meta) {
        case 
'C': return 'VARCHAR';
        case 
'XL':
        case 
'X': return 'LONG';
        
        case 
'C2': return 'VARCHAR UNICODE';
        case 
'X2': return 'LONG UNICODE';
        
        case 
'B': return 'LONG';
            
        case 
'D': return 'DATE';
        case 
'TS':
        case 
'T': return 'TIMESTAMP';
        
        case 
'L': return 'BOOLEAN';
        case 
'I': return 'INTEGER';
        case 
'I1': return 'FIXED(3)';
        case 
'I2': return 'SMALLINT';
        case 
'I4': return 'INTEGER';
        case 
'I8': return 'FIXED(20)';
        
        case 
'F': return 'FLOAT(38)';
        case 
'N': return 'FIXED';
        default:
            return 
$meta;
        }
    }
    
    function 
MetaType($t,$len=-1,$fieldobj=false)
    {
        if (
is_object($t)) {
            
$fieldobj $t;
            
$t $fieldobj->type;
            
$len $fieldobj->max_length;
        }
        static 
$maxdb_type2adodb = array(
            
'VARCHAR'    => 'C',
            
'CHARACTER'    => 'C',
            
'LONG'        => 'X',        // no way to differ between 'X' and 'B' :-(
            
'DATE'        => 'D',
            
'TIMESTAMP'    => 'T',
            
'BOOLEAN'    => 'L',
            
'INTEGER'    => 'I4',
            
'SMALLINT'    => 'I2',
            
'FLOAT'        => 'F',
            
'FIXED'        => 'N',
        );
        
$type = isset($maxdb_type2adodb[$t]) ? $maxdb_type2adodb[$t] : 'C';

        
// convert integer-types simulated with fixed back to integer
        
if ($t == 'FIXED' && !$fieldobj->scale && ($len == 20 || $len == 3)) {
            
$type $len == 20 'I8' 'I1';
        }
        if (
$fieldobj->auto_increment$type 'R';

        return 
$type;
    }
    
    
// return string must begin with space
    
function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned)
    {    
        
$suffix '';
        if (
$funsigned$suffix .= ' UNSIGNED';
        if (
$fnotnull$suffix .= ' NOT NULL';
        if (
$fautoinc$suffix .= ' DEFAULT SERIAL';
        elseif (
strlen($fdefault)) $suffix .= " DEFAULT $fdefault";
        if (
$fconstraint$suffix .= ' '.$fconstraint;
        return 
$suffix;
    }

    function 
AddColumnSQL($tabname$flds)
    {
        
$tabname $this->TableName ($tabname);
        
$sql = array();
        list(
$lines,$pkey) = $this->_GenFields($flds);
        return array( 
'ALTER TABLE ' $tabname ' ADD (' implode(', ',$lines) . ')' );
    }
    
    function 
AlterColumnSQL($tabname$flds)
    {
        
$tabname $this->TableName ($tabname);
        
$sql = array();
        list(
$lines,$pkey) = $this->_GenFields($flds);
        return array( 
'ALTER TABLE ' $tabname ' MODIFY (' implode(', ',$lines) . ')' );
    }

    function 
DropColumnSQL($tabname$flds)
    {
        
$tabname $this->TableName ($tabname);
        if (!
is_array($flds)) $flds explode(',',$flds);
        foreach(
$flds as $k => $v) {
            
$flds[$k] = $this->NameQuote($v);
        }
        return array( 
'ALTER TABLE ' $tabname ' DROP (' implode(', ',$flds) . ')' );
    }    
}

?>
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586