fix: mark a property generated if it is STORED or VIRTUAL
Signed-off-by: Muhammad Aaqil <aaqilcs102@gmail.com>
This commit is contained in:
parent
b057c20fe2
commit
de1c74f33f
|
@ -166,7 +166,14 @@ function mixinDiscovery(MySQL, mysql) {
|
||||||
' numeric_scale AS "dataScale",' +
|
' numeric_scale AS "dataScale",' +
|
||||||
' column_type AS "columnType",' +
|
' column_type AS "columnType",' +
|
||||||
' is_nullable = \'YES\' AS "nullable",' +
|
' is_nullable = \'YES\' AS "nullable",' +
|
||||||
' CASE WHEN extra LIKE \'%auto_increment%\' THEN 1 ELSE 0 END AS "generated"' +
|
`
|
||||||
|
case
|
||||||
|
when extra like '%virtual%' then 1
|
||||||
|
when extra like '%stored%' then 1
|
||||||
|
when extra LIKE '%auto_increment%' THEN 1
|
||||||
|
else 0
|
||||||
|
end as "generated"
|
||||||
|
` +
|
||||||
' FROM information_schema.columns' +
|
' FROM information_schema.columns' +
|
||||||
' WHERE table_schema=' + mysql.escape(schema) +
|
' WHERE table_schema=' + mysql.escape(schema) +
|
||||||
(table ? ' AND table_name=' + mysql.escape(table) : ''),
|
(table ? ' AND table_name=' + mysql.escape(table) : ''),
|
||||||
|
@ -181,7 +188,14 @@ function mixinDiscovery(MySQL, mysql) {
|
||||||
' numeric_scale AS "dataScale",' +
|
' numeric_scale AS "dataScale",' +
|
||||||
' column_type AS "columnType",' +
|
' column_type AS "columnType",' +
|
||||||
' is_nullable = \'YES\' AS "nullable",' +
|
' is_nullable = \'YES\' AS "nullable",' +
|
||||||
' CASE WHEN extra LIKE \'%auto_increment%\' THEN 1 ELSE 0 END AS "generated"' +
|
`
|
||||||
|
case
|
||||||
|
when extra like '%virtual%' then 1
|
||||||
|
when extra like '%stored%' then 1
|
||||||
|
when extra LIKE '%auto_increment%' THEN 1
|
||||||
|
else 0
|
||||||
|
end as "generated"
|
||||||
|
` +
|
||||||
' FROM information_schema.columns' +
|
' FROM information_schema.columns' +
|
||||||
(table ? ' WHERE table_name=' + mysql.escape(table) : ''),
|
(table ? ' WHERE table_name=' + mysql.escape(table) : ''),
|
||||||
'table_name, ordinal_position', {});
|
'table_name, ordinal_position', {});
|
||||||
|
|
|
@ -251,6 +251,30 @@ describe('Discover model generated columns', function() {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
it('should mark STORED column as generated', function(done) {
|
||||||
|
db.discoverModelProperties('testgen', function(err, models) {
|
||||||
|
if (err) return done(err);
|
||||||
|
models.forEach(function(model) {
|
||||||
|
assert(model.tableName.toLowerCase() === 'testgen');
|
||||||
|
if (model.columnName === 'TOKEN') {
|
||||||
|
assert(model.generated, 'STRONGLOOP.TESTGEN.TOKEN should be a generated (identity) column');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('should mark VIRTUAL column as generated', function(done) {
|
||||||
|
db.discoverModelProperties('testgen', function(err, models) {
|
||||||
|
if (err) return done(err);
|
||||||
|
models.forEach(function(model) {
|
||||||
|
assert(model.tableName.toLowerCase() === 'testgen');
|
||||||
|
if (model.columnName === 'VIRTUAL_TOKEN') {
|
||||||
|
assert(model.generated, 'STRONGLOOP.TESTGEN.VIRTUAL_TOKEN should be a generated (identity) column');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Discover LDL schema from a table', function() {
|
describe('Discover LDL schema from a table', function() {
|
||||||
|
|
|
@ -217,8 +217,10 @@ DROP TABLE IF EXISTS `TESTGEN`;
|
||||||
CREATE TABLE `TESTGEN` (
|
CREATE TABLE `TESTGEN` (
|
||||||
`ID` int(11) NOT NULL AUTO_INCREMENT,
|
`ID` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`NAME` varchar(64) DEFAULT NULL,
|
`NAME` varchar(64) DEFAULT NULL,
|
||||||
|
`TOKEN` CHAR(32) GENERATED ALWAYS AS (MD5(NAME)) STORED,
|
||||||
|
`VIRTUAL_TOKEN` CHAR(32) GENERATED ALWAYS AS (MD5(NAME)) VIRTUAL,
|
||||||
PRIMARY KEY (`ID`)
|
PRIMARY KEY (`ID`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
Loading…
Reference in New Issue