Browse Source

implement show columns

(alias of 'show fields')
Aleksey N. Vinogradov 9 months ago
parent
commit
fae689be87
4 changed files with 10 additions and 2 deletions
  1. 1 0
      src/sphinxql_extra.l
  2. 6 2
      src/sphinxql_extra.y
  3. 0 0
      test/test_272/model.bin
  4. 3 0
      test/test_272/test.xml

+ 1 - 0
src/sphinxql_extra.l

@@ -80,6 +80,7 @@ FLOAT_CONSTANT      ({INT}\.{INT}?|{INT}?\.{INT}){EXPONENT}?
 "CREATE"			{ STORE_BOUNDS; return TOK_CREATE; }
 "CREATE"			{ STORE_BOUNDS; return TOK_CREATE; }
 "DATABASE"			{ STORE_BOUNDS; return TOK_DATABASE; }
 "DATABASE"			{ STORE_BOUNDS; return TOK_DATABASE; }
 "FIELDS"			{ STORE_BOUNDS; return TOK_FIELDS; }
 "FIELDS"			{ STORE_BOUNDS; return TOK_FIELDS; }
+"COLUMNS"			{ STORE_BOUNDS; return TOK_COLUMNS; }
 "FLUSH" 			{ STORE_BOUNDS; return TOK_FLUSH; }
 "FLUSH" 			{ STORE_BOUNDS; return TOK_FLUSH; }
 "FROM"				{ STORE_BOUNDS; return TOK_FROM; }
 "FROM"				{ STORE_BOUNDS; return TOK_FROM; }
 "GLOBAL"			{ STORE_BOUNDS; return TOK_GLOBAL; }
 "GLOBAL"			{ STORE_BOUNDS; return TOK_GLOBAL; }

+ 6 - 2
src/sphinxql_extra.y

@@ -24,6 +24,7 @@
 %token	TOK_QUOTED_STRING "string"
 %token	TOK_QUOTED_STRING "string"
 
 
 %token	TOK_CREATE
 %token	TOK_CREATE
+%token	TOK_COLUMNS
 %token	TOK_DATABASE
 %token	TOK_DATABASE
 %token	TOK_FIELDS
 %token	TOK_FIELDS
 %token	TOK_FLUSH
 %token	TOK_FLUSH
@@ -78,7 +79,7 @@ statement:
 ident:
 ident:
 	TOK_FIELDS | TOK_FLUSH | TOK_FROM | TOK_LOCK | TOK_READ | TOK_RELOAD | TOK_SAVEPOINT
 	TOK_FIELDS | TOK_FLUSH | TOK_FROM | TOK_LOCK | TOK_READ | TOK_RELOAD | TOK_SAVEPOINT
 	| TOK_SET | TOK_SHOW | TOK_TABLE | TOK_TABLES | TOK_UNLOCK | TOK_USE | TOK_WITH | TOK_IDENT
 	| TOK_SET | TOK_SHOW | TOK_TABLE | TOK_TABLES | TOK_UNLOCK | TOK_USE | TOK_WITH | TOK_IDENT
-	| TOK_TRIGGERS | TOK_LIKE | TOK_CREATE | TOK_DATABASE
+	| TOK_TRIGGERS | TOK_LIKE | TOK_CREATE | TOK_DATABASE | TOK_COLUMNS
 	; // no TOK_SESSION, no TOK_GLOBAL
 	; // no TOK_SESSION, no TOK_GLOBAL
 
 
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
@@ -228,9 +229,12 @@ savepoint_sp:
 	;
 	;
 
 
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
+fields_or_columns:
+	TOK_FIELDS | TOK_COLUMNS
+	;
 
 
 show_fields:
 show_fields:
-	TOK_SHOW TOK_FIELDS TOK_FROM table_ident like_filter
+	TOK_SHOW fields_or_columns TOK_FROM table_ident like_filter
 		{
 		{
 			pParser->SetIndex ($4);
 			pParser->SetIndex ($4);
 			pParser->m_pStmt->m_eStmt = STMT_DESCRIBE;
 			pParser->m_pStmt->m_eStmt = STMT_DESCRIBE;

File diff suppressed because it is too large
+ 0 - 0
test/test_272/model.bin


+ 3 - 0
test/test_272/test.xml

@@ -127,6 +127,9 @@ show fields from `check`;
 SELECT /*!40001 SQL_NO_CACHE */ * FROM `check`;
 SELECT /*!40001 SQL_NO_CACHE */ * FROM `check`;
 SELECT * FROM `check`;
 SELECT * FROM `check`;
 
 
+show columns from check;
+show columns from indexrt like '%id';
+
 /*M!999999\- enable the sandbox mode */
 /*M!999999\- enable the sandbox mode */
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 
 

Some files were not shown because too many files changed in this diff