| 1 | #include "duckdb/parser/statement/pragma_statement.hpp" |
|---|---|
| 2 | #include "duckdb/parser/transformer.hpp" |
| 3 | |
| 4 | using namespace duckdb; |
| 5 | using namespace std; |
| 6 | |
| 7 | unique_ptr<PragmaStatement> Transformer::TransformShow(PGNode *node) { |
| 8 | // we transform SHOW x into PRAGMA SHOW('x') |
| 9 | |
| 10 | auto stmt = reinterpret_cast<PGVariableShowStmt *>(node); |
| 11 | |
| 12 | auto result = make_unique<PragmaStatement>(); |
| 13 | auto &info = *result->info; |
| 14 | |
| 15 | if (string(stmt->name) == "tables") { |
| 16 | // show all tables |
| 17 | info.name = "show_tables"; |
| 18 | info.pragma_type = PragmaType::NOTHING; |
| 19 | } else { |
| 20 | // show one specific table |
| 21 | info.name = "show"; |
| 22 | info.pragma_type = PragmaType::CALL; |
| 23 | info.parameters.push_back(Value(stmt->name)); |
| 24 | } |
| 25 | |
| 26 | return result; |
| 27 | } |
| 28 |