public function registerColumn(DataControllerCallContext $callcontext, DatasetMetaData $dataset, $columnName, $stage) {
        parent::registerColumn($callcontext, $dataset, $columnName, $stage);

        if ($stage == DatasetStorageObserver::STAGE__BEFORE) {
            $newLogicalColumn = $this->newLogicalDataset->getColumn($columnName);
            $newColumn = $dataset->getColumn($columnName);

            // updating properties which were potentially changed in revertIneligibleColumnPropertyValues()
            $newLogicalColumn->key = $newColumn->key;
        }
    }
    public function registerColumn(DataControllerCallContext $callcontext, DatasetMetaData $dataset, $columnName, $stage) {
        parent::registerColumn($callcontext, $dataset, $columnName, $stage);

        $this->datasetStructureModified = TRUE;
    }
    public function registerColumn(DataControllerCallContext $callcontext, DatasetMetaData $dataset, $columnName, $stage) {
        parent::registerColumn($callcontext, $dataset, $columnName, $stage);

        if ($stage == DatasetStorageObserver::STAGE__BEFORE) {
            $newLogicalColumn = $this->newLogicalDataset->getColumn($columnName);
            $newColumn = $dataset->getColumn($columnName);

            $node = new stdClass();
            $node->type = NODE_TYPE_COLUMN;
            $node->language = LANGUAGE_NONE;
            node_object_prepare($node);

            $node->field_column_sysname[$node->language][0]['value'] = $newColumn->name;
            $node->field_column_dataset[$node->language][0]['nid'] = $this->getDataset_NID($dataset);
            $node->field_column_index[$node->language][0]['value'] = $newColumn->columnIndex;

            $node->title = $newColumn->publicName;
            $node->field_column_desc[$node->language][0]['value'] = $newColumn->description;

            // Note: storing logical data type for the column
            $node->field_column_datatype[$node->language][0]['value'] = $newLogicalColumn->type->applicationType;
            $node->field_column_format[$node->language][0]['value'] = gd_column_prepare_column_format($newLogicalColumn->type);
            $node->field_column_persistence[$node->language][0]['value'] = $newColumn->persistence;

            $node->field_column_key[$node->language][0]['value'] = $newColumn->isKey() ? 1 : 0;
            $node->field_column_source[$node->language][0]['value'] = $newColumn->source;
            $node->status = $newColumn->isUsed() ? NODE_PUBLISHED : NODE_NOT_PUBLISHED;

            node_save($node);

            $newLogicalColumn->nid = $node->nid;
        }
    }