function get_datatype_definition($idx, $title, $rowspan = 1, $collate = FALSE) { global $s_coldefs, $tb_strings; // preselect values for the form elements $name_value = isset($s_coldefs[$idx]['name']) ? $s_coldefs[$idx]['name'] : ''; $colpos_value = isset($_POST['tb_modcol_pos']) ? $_POST['tb_modcol_pos'] : ''; $datatype_pre = isset($s_coldefs[$idx]['type']) ? $s_coldefs[$idx]['type'] : NULL; $size_value = isset($s_coldefs[$idx]['size']) ? $s_coldefs[$idx]['size'] : ''; $charset_pre = isset($s_coldefs[$idx]['charset']) ? $s_coldefs[$idx]['charset'] : NULL; $collate_pre = isset($s_coldefs[$idx]['collate']) ? $s_coldefs[$idx]['collate'] : NULL; $prec_value = isset($s_coldefs[$idx]['prec']) ? $s_coldefs[$idx]['prec'] : ''; $scale_value = isset($s_coldefs[$idx]['scale']) ? $s_coldefs[$idx]['scale'] : ''; $stype_value = isset($s_coldefs[$idx]['stype']) ? $s_coldefs[$idx]['stype'] : ''; $segsize_value = isset($s_coldefs[$idx]['segsize']) ? $s_coldefs[$idx]['segsize'] : ''; // colspan attribute for the charset cell $charspan = $collate == FALSE ? 2 : 1; // javascript event-handler to adjust the collation accordingly to the selected charset $charset_tags = array(); if ($collate == TRUE) { $form_name = get_form_name($idx); $charset_tags = array('onChange' => 'adjustCollation(document.' . $form_name . '.cd_def_charset' . $idx . ', document.' . $form_name . '.cd_def_collate' . $idx . ')'); } $html = " <tr>\n" . ' <th colspan="9" align="left"><b>' . $title . "</b></th>\n" . " </tr>\n" . " <tr>\n" . ' <td rowspan="' . $rowspan . "\" valign=\"top\" height=\"100%\">\n" . " <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n" . " <tr>\n" . " <td>\n" . ' <b>' . $tb_strings['Name'] . "</b><br>\n" . ' ' . get_textfield('cd_def_name' . $idx, 20, 31, $name_value) . " </td>\n" . " </tr>\n" . " </table>\n"; if ($idx === 'mod') { $html .= " <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" valign=\"bottom\" height=\"100%\">\n" . " <tr>\n" . " <td>\n" . ' <b>' . $tb_strings['NewColPos'] . "</b><br>\n" . ' ' . get_textfield('tb_modcol_pos', 4, 4, $colpos_value) . " </td>\n" . " </tr>\n" . " </table>\n"; } $html .= " </td>\n" . " <td>\n" . ' <b>' . $tb_strings['Datatype'] . "</b><br>\n" . ' ' . get_selectlist('cd_def_type' . $idx, get_datatypes(SERVER_FAMILY, SERVER_VERSION), $datatype_pre, TRUE) . " </td>\n" . " <td>\n" . ' <b>' . $tb_strings['Size'] . "</b><br>\n" . ' ' . get_textfield('cd_def_size' . $idx, 5, 5, $size_value) . " </td>\n" . ' <td colspan="' . $charspan . "\">\n" . ' <b>' . $tb_strings['Charset'] . "</b><br>\n" . ' ' . get_charset_select('cd_def_charset' . $idx, $charset_pre, TRUE, $charset_tags) . " </td>\n"; if ($collate == TRUE) { $html .= " <td>\n" . ' <b>' . $tb_strings['Collation'] . "</b><br>\n" . ' ' . get_collation_select('cd_def_collate' . $idx, $collate_pre, TRUE) . " </td>\n"; } $html .= " <td align=\"center\">\n" . ' <b>' . $tb_strings['PrecShort'] . "</b><br>\n" . ' ' . get_textfield('cd_def_prec' . $idx, 2, 2, $prec_value) . " </td>\n" . " <td align=\"center\">\n" . ' <b>' . $tb_strings['Scale'] . "</b><br>\n" . ' ' . get_textfield('cd_def_scale' . $idx, 2, 2, $scale_value) . " </td>\n" . " <td align=\"center\">\n" . ' <b>' . $tb_strings['Subtype'] . "</b><br>\n" . ' ' . get_textfield('cd_def_stype' . $idx, 3, 3, $stype_value) . " </td>\n" . " <td align=\"center\">\n" . ' <b>' . $tb_strings['SegSiShort'] . "</b><br>\n" . ' ' . get_textfield('cd_def_segsize' . $idx, 5, 5, $segsize_value) . " </td>\n" . " </tr>\n"; echo $html; }
function get_datatype($type, $subtype) { $datatypes = get_datatypes(SERVER_FAMILY, SERVER_VERSION); if ($type == 16 && empty($subtype) && !isset($datatypes[16])) { return 'INT64'; } if ($subtype == 0 or $subtype == NULL or $type == 261 or $type == 14) { return $datatypes[$type]; } elseif ($subtype == 1) { return 'NUMERIC'; } elseif ($subtype == 2) { return 'DECIMAL'; } else { return 'unknown'; } }