void MergeTreeBaseSelectBlockInputStream::injectVirtualColumns(Block & block) const
{
    /// add virtual columns
    /// Except _sample_factor, which is added from the outside.
    if (!virt_column_names.empty())
    {
        const auto rows = block.rows();

        for (const auto & virt_column_name : virt_column_names)
        {
            if (virt_column_name == "_part")
            {
                ColumnPtr column;
                if (rows)
                    column = DataTypeString().createColumnConst(rows, task->data_part->name)->convertToFullColumnIfConst();
                else
                    column = DataTypeString().createColumn();

                block.insert({ column, std::make_shared<DataTypeString>(), virt_column_name});
            }
            else if (virt_column_name == "_part_index")
            {
                ColumnPtr column;
                if (rows)
                    column = DataTypeUInt64().createColumnConst(rows, task->part_index_in_query)->convertToFullColumnIfConst();
                else
                    column = DataTypeUInt64().createColumn();

                block.insert({ column, std::make_shared<DataTypeUInt64>(), virt_column_name});
            }
            else if (virt_column_name == "_partition_id")
            {
                ColumnPtr column;
                if (rows)
                    column = DataTypeString().createColumnConst(rows, task->data_part->info.partition_id)->convertToFullColumnIfConst();
                else
                    column = DataTypeString().createColumn();

                block.insert({ column, std::make_shared<DataTypeString>(), virt_column_name});
            }
        }
    }
}
Example #2
0
csRef<iDataBuffer> csCommonImageFile::GetRawData() const
{
  csRef<iDataBuffer> d;
#ifdef THREADED_LOADING
  if (!loadJob) return d;
  WaitForJob();
  csRef<iImageFileLoader> currentLoader = 
    loadJob->currentLoader;
#endif
  if (currentLoader.IsValid()
    && (DataTypeString (currentLoader->GetDataType()) != 0))
    return currentLoader->GetRawData();
  MakeImageData();
  return csImageMemory::GetRawData ();
}
Example #3
0
const char* csCommonImageFile::GetRawFormat() const
{
#ifdef THREADED_LOADING
  if (!loadJob) return 0;
  //WaitForJob();
  csRef<iImageFileLoader> currentLoader = 
    loadJob->currentLoader;
#endif
  if (currentLoader.IsValid())
  {
    const char* rawFormat = DataTypeString (currentLoader->GetDataType());
    if (rawFormat != 0) return rawFormat;
  }
  MakeImageData();
  return csImageMemory::GetRawFormat ();
}