null+****@clear*****
null+****@clear*****
2012年 7月 9日 (月) 18:03:42 JST
SHIMODA Hiroshi 2012-07-09 18:03:42 +0900 (Mon, 09 Jul 2012) New Revision: 5794f7660149492b9d0954f91c7c8605d6e28a9e https://github.com/groonga/gcs/commit/5794f7660149492b9d0954f91c7c8605d6e28a9e Log: Add support for the field type "literal" to the DefineIndexField action Modified files: lib/api/2011-02-01/configuration.js lib/domain.js Modified: lib/api/2011-02-01/configuration.js (+17 -26) =================================================================== --- lib/api/2011-02-01/configuration.js 2012-07-09 17:54:15 +0900 (fb0ae5c) +++ lib/api/2011-02-01/configuration.js 2012-07-09 18:03:42 +0900 (6688aea) @@ -205,6 +205,7 @@ handlers.DefineIndexField = function(database, request, response) { var field = domain.getIndexField(fieldName); var createdAt = new Date(); + var alterTableName = domain.termsTableName; var columnType = field.fieldTypeToColumnType(fieldType); try { database.commandSync('column_create', { @@ -214,32 +215,21 @@ handlers.DefineIndexField = function(database, request, response) { type: columnType }); - switch (fieldType) { - case 'text': - database.commandSync('column_create', { - table: domain.termsTableName, - name: field.indexColumnName, - flags: Database.INDEX_COLUMN_DEFAULT_FLAGS, - type: domain.tableName, - source: field.columnName - }); - break; - - case 'uint'; - database.commandSync('table_create', { - name: field.alterTableName, - flags: Database.TABLE_HASH_KEY, - key_type: columnType - }); - database.commandSync('column_create', { - table: field.alterTableName, - name: field.indexColumnName, - flags: Database.INDEX_COLUMN_DEFAULT_FLAGS, - type: domain.tableName, - source: field.columnName - }); - break; + if (fieldType == 'uint' || fieldType == 'literal') { + database.commandSync('table_create', { + name: field.alterTableName, + flags: Database.TABLE_HASH_KEY, + key_type: field.fieldTypeToAlterTableKeyType(fieldType) + }); + alterTableName = field.alterTableName; } + database.commandSync('column_create', { + table: alterTableName, + name: field.indexColumnName, + flags: Database.INDEX_COLUMN_DEFAULT_FLAGS, + type: domain.tableName, + source: field.columnName + }); response.contentType('application/xml'); response.send(createDefineIndexFieldResponse({ @@ -285,7 +275,8 @@ handlers.DeleteIndexField = function(database, request, response) { name: field.columnName }); - if (column.type == field.fieldTypeToColumnType('uint')) { + if (column.type == field.fieldTypeToColumnType('uint') || + column.type == field.fieldTypeToColumnType('literal')) { database.commandSync('table_remove', { name: field.alterTableName }); Modified: lib/domain.js (+11 -0) =================================================================== --- lib/domain.js 2012-07-09 17:54:15 +0900 (2f419be) +++ lib/domain.js 2012-07-09 18:03:42 +0900 (8e9a1b6) @@ -167,6 +167,17 @@ IndexField.prototype = { default: throw new Error('Unsupported index field type '+fieldType); } + }, + fieldTypeToAlterTableKeyType: function(fieldType) { + switch (fieldType) { + case 'uint': + return Database.UInt32; + case 'literal': + return Database.ShortText; + default: + throw new Error('Unsupported index field type '+fieldType+ + ' for alter table'); + } } }; -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...下载