[Improvement](meta) add default_value column & is changed column for result of show_variables stmt (#23017)

* [Improvement](meta) add default_value column for result of show_variables stmt

* add Changed column to show whether value is modified

* fix code style issue
This commit is contained in:
Yulei-Yang
2023-08-20 20:48:45 +08:00
committed by GitHub
parent 97fa840324
commit 6ffc26858a
4 changed files with 24 additions and 4 deletions

View File

@ -32,10 +32,14 @@ public class ShowVariablesStmt extends ShowStmt {
private static final Logger LOG = LogManager.getLogger(ShowVariablesStmt.class);
private static final String NAME_COL = "Variable_name";
private static final String VALUE_COL = "Value";
private static final String DEFAULT_VALUE_COL = "Default_Value";
private static final String CHANGED_COL = "Changed";
private static final ShowResultSetMetaData META_DATA =
ShowResultSetMetaData.builder()
.addColumn(new Column(NAME_COL, ScalarType.createVarchar(20)))
.addColumn(new Column(VALUE_COL, ScalarType.createVarchar(20)))
.addColumn(new Column(DEFAULT_VALUE_COL, ScalarType.createVarchar(20)))
.addColumn(new Column(CHANGED_COL, ScalarType.createVarchar(20)))
.build();
private SetType type;

View File

@ -151,11 +151,16 @@ public class SchemaTable extends Table {
.put("session_variables",
new SchemaTable(SystemIdGenerator.getNextId(), "session_variables", TableType.SCHEMA,
builder().column("VARIABLE_NAME", ScalarType.createVarchar(64))
.column("VARIABLE_VALUE", ScalarType.createVarchar(1024)).build()))
.column("VARIABLE_VALUE", ScalarType.createVarchar(1024))
.column("DEFAULT_VALUE", ScalarType.createVarchar(1024))
.column("CHANGED", ScalarType.createVarchar(4))
.build()))
.put("global_variables",
new SchemaTable(SystemIdGenerator.getNextId(), "global_variables", TableType.SCHEMA,
builder().column("VARIABLE_NAME", ScalarType.createVarchar(64))
.column("VARIABLE_VALUE", ScalarType.createVarchar(1024)).build()))
.column("VARIABLE_VALUE", ScalarType.createVarchar(1024))
.column("DEFAULT_VALUE", ScalarType.createVarchar(1024))
.column("CHANGED", ScalarType.createVarchar(4)).build()))
.put("columns",
new SchemaTable(SystemIdGenerator.getNextId(), "columns", TableType.SCHEMA,
builder().column("TABLE_CATALOG", ScalarType.createVarchar(512))

View File

@ -720,6 +720,15 @@ public class VariableMgr {
}
}
VarContext varContext = ctxByVarName.get(entry.getKey());
if (varContext != null) {
row.add(varContext.defaultValue);
row.add(row.get(1).equals(row.get(2)) ? "0" : "1");
} else {
row.add("-");
row.add("-");
}
rows.add(row);
}
} finally {

View File

@ -26,16 +26,18 @@ public class ShowVariablesStmtTest {
ShowVariablesStmt stmt = new ShowVariablesStmt(null, null);
stmt.analyze(null);
Assert.assertEquals("SHOW DEFAULT VARIABLES", stmt.toString());
Assert.assertEquals(2, stmt.getMetaData().getColumnCount());
Assert.assertEquals(4, stmt.getMetaData().getColumnCount());
Assert.assertEquals("Variable_name", stmt.getMetaData().getColumn(0).getName());
Assert.assertEquals("Value", stmt.getMetaData().getColumn(1).getName());
Assert.assertEquals("Default_Value", stmt.getMetaData().getColumn(2).getName());
Assert.assertEquals("Changed", stmt.getMetaData().getColumn(3).getName());
Assert.assertNull(stmt.getPattern());
Assert.assertEquals(SetType.DEFAULT, stmt.getType());
stmt = new ShowVariablesStmt(SetType.GLOBAL, "abc");
stmt.analyze(null);
Assert.assertEquals("SHOW GLOBAL VARIABLES LIKE 'abc'", stmt.toString());
Assert.assertEquals(2, stmt.getMetaData().getColumnCount());
Assert.assertEquals(4, stmt.getMetaData().getColumnCount());
Assert.assertEquals("Variable_name", stmt.getMetaData().getColumn(0).getName());
Assert.assertEquals("Value", stmt.getMetaData().getColumn(1).getName());
Assert.assertEquals("abc", stmt.getPattern());