| 58 | } |
| 59 | |
| 60 | static std::unique_ptr<TableFuncBindData> bindFunc(const main::ClientContext* context, |
| 61 | const TableFuncBindInput* input) { |
| 62 | std::vector<std::string> columnNames; |
| 63 | std::vector<LogicalType> columnTypes; |
| 64 | columnNames.emplace_back("name"); |
| 65 | columnTypes.emplace_back(LogicalType::STRING()); |
| 66 | columnNames.emplace_back("database name"); |
| 67 | columnTypes.emplace_back(LogicalType::STRING()); |
| 68 | columnNames.emplace_back("start value"); |
| 69 | columnTypes.emplace_back(LogicalType::INT64()); |
| 70 | columnNames.emplace_back("increment"); |
| 71 | columnTypes.emplace_back(LogicalType::INT64()); |
| 72 | columnNames.emplace_back("min value"); |
| 73 | columnTypes.emplace_back(LogicalType::INT64()); |
| 74 | columnNames.emplace_back("max value"); |
| 75 | columnTypes.emplace_back(LogicalType::INT64()); |
| 76 | columnNames.emplace_back("cycle"); |
| 77 | columnTypes.emplace_back(LogicalType::BOOL()); |
| 78 | std::vector<SequenceInfo> sequenceInfos; |
| 79 | for (const auto& entry : |
| 80 | Catalog::Get(*context)->getSequenceEntries(transaction::Transaction::Get(*context))) { |
| 81 | const auto sequenceData = entry->getSequenceData(); |
| 82 | auto sequenceInfo = SequenceInfo{entry->getName(), LOCAL_DB_NAME, sequenceData.startValue, |
| 83 | sequenceData.increment, sequenceData.minValue, sequenceData.maxValue, |
| 84 | sequenceData.cycle}; |
| 85 | sequenceInfos.push_back(std::move(sequenceInfo)); |
| 86 | } |
| 87 | |
| 88 | // TODO: uncomment this when we can test it |
| 89 | // for (auto attachedDatabase : databaseManager->getAttachedDatabases()) { |
| 90 | // auto databaseName = attachedDatabase->getDBName(); |
| 91 | // auto databaseType = attachedDatabase->getDBType(); |
| 92 | // for (auto& entry : attachedDatabase->getCatalog()->getSequenceEntries(context->getTx())) |
| 93 | // { |
| 94 | // auto sequenceData = entry->getSequenceData(); |
| 95 | // auto sequenceInfo = |
| 96 | // SequenceInfo{entry->getName(), std::format("{}({})", databaseName, |
| 97 | // databaseType), |
| 98 | // sequenceData.startValue, sequenceData.increment, sequenceData.minValue, |
| 99 | // sequenceData.maxValue, sequenceData.cycle}; |
| 100 | // sequenceInfos.push_back(std::move(sequenceInfo)); |
| 101 | // } |
| 102 | // } |
| 103 | columnNames = TableFunction::extractYieldVariables(columnNames, input->yieldVariables); |
| 104 | auto columns = input->binder->createVariables(columnNames, columnTypes); |
| 105 | return std::make_unique<ShowSequencesBindData>(std::move(sequenceInfos), columns, |
| 106 | sequenceInfos.size()); |
| 107 | } |
| 108 | |
| 109 | function_set ShowSequencesFunction::getFunctionSet() { |
| 110 | function_set functionSet; |
nothing calls this directly
no test coverage detected