diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php
index 710030637f..432a463423 100644
--- a/libraries/display_tbl.lib.php
+++ b/libraries/display_tbl.lib.php
@@ -593,6 +593,15 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $
PMA_display_html_checkbox('hide_transformation', __('Hide') . ' ' . __('Browser transformation'), ! empty($_SESSION['tmp_user_values']['hide_transformation']), false);
echo '';
+ echo '
';
+ $choices = array(
+ 'GEOM' => __('Geometry'),
+ 'WKT' => __('Well Known Text'),
+ 'WKB' => __('Well Known Binary')
+ );
+ PMA_display_html_radio('geometry_display', $choices, $_SESSION['tmp_user_values']['geometry_display']);
+ echo '
';
+
echo '';
echo '';
@@ -1386,12 +1395,70 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
}
// g e o m e t r y
} elseif ($meta->type == 'geometry') {
- $geometry_text = PMA_handle_non_printable_contents('GEOMETRY', (isset($row[$i]) ? $row[$i] : ''), $transform_function, $transform_options, $default_function, $meta);
- // remove 'inline_edit' from $class as we can't edit geometry data.
+ // Remove 'inline_edit' from $class as we do not allow to inline-edit geometry data.
$class = str_replace('inline_edit', '', $class);
- $vertical_display['data'][$row_no][$i] = PMA_buildValueDisplay($class, $condition_field, $geometry_text);
- unset($geometry_text);
+
+ // Display as [GEOMETRY - (size)]
+ if ('GEOM' == $_SESSION['tmp_user_values']['geometry_display']) {
+ $geometry_text = PMA_handle_non_printable_contents(
+ 'GEOMETRY', (isset($row[$i]) ? $row[$i] : ''), $transform_function,
+ $transform_options, $default_function, $meta
+ );
+ $vertical_display['data'][$row_no][$i] = PMA_buildValueDisplay(
+ $class, $condition_field, $geometry_text
+ );
+
+ // Display in Well Known Text(WKT) format.
+ } elseif ('WKT' == $_SESSION['tmp_user_values']['geometry_display']) {
+ // Convert to WKT format
+ $wktsql = "SELECT ASTEXT (GeomFromWKB(x'" . PMA_substr(bin2hex($row[$i]), 8) . "'))";
+ $wktresult = PMA_DBI_try_query($wktsql, null, PMA_DBI_QUERY_STORE);
+ $wktarr = PMA_DBI_fetch_row($wktresult, 0);
+ $wktval = $wktarr[0];
+ @PMA_DBI_free_result($wktresult);
+
+ if (PMA_strlen($wktval) > $GLOBALS['cfg']['LimitChars']
+ && $_SESSION['tmp_user_values']['display_text'] == 'P'
+ ) {
+ $wktval = PMA_substr($wktval, 0, $GLOBALS['cfg']['LimitChars']) . '...';
+ $is_field_truncated = true;
+ }
+
+ $vertical_display['data'][$row_no][$i] = ' $GLOBALS['cfg']['LimitChars']
+ && $_SESSION['tmp_user_values']['display_text'] == 'P'
+ ) {
+ $wkbval = PMA_substr($wkbval, 0, $GLOBALS['cfg']['LimitChars']) . '...';
+ $is_field_truncated = true;
+ }
+
+ $vertical_display['data'][$row_no][$i] = ' | |