このコミットが含まれているのは:
2026-10-28 20:34:11 +09:00
コミット cb3f4c600a
14個のファイルの変更、208行の追加、33行の削除
+11 -1
ファイルの表示
@@ -30,10 +30,11 @@ class CountsCondition
nullable = prefix.present? || (physical ? physical[:nullable] : key != 'latest')
nullable = false if field[:children]
entry = { key:, type:, labels: path_labels, nullable:,
multiple: prefix.present? || field[:children].present?,
multiple: prefix.present? || field[:children].present? || field[:multiple_values],
collection: field[:children].present? || type == :interval,
operators: CountsResourceDefinition::OPERATORS.fetch(type) }
entry[:label_values] = field[:label_values] if field[:label_values]
entry[:name_locale] = field[:name_locale] if field[:name_locale]
result.reject! { _1[:key] == key }
result << entry
visit.call(field[:children] || [], key, path_labels)
@@ -344,6 +345,7 @@ class CountsCondition
def source_for(key)
root, *parts = key.split('.')
if @definition.resource == 'tags' && @definition.name_column(root)
return @definition.alias_source(root) if root.start_with?('aliases_')
return [nil, @definition.name_expression(root)]
end
return [nil, "(#{ @population.latest_sql })"] if root == 'latest'
@@ -357,6 +359,10 @@ class CountsCondition
if root == 'parents'
source, id = parent_source
if @definition.resource == 'tags' && @definition.name_column(parts.first)
if parts.first.start_with?('aliases_')
aliases, value = @definition.alias_source(parts.first, 'parent_version')
return ["#{ source } JOIN #{ aliases }", value]
end
return [source, @definition.name_expression(parts.first, 'parent_version')]
end
if parts.first == 'names'
@@ -402,6 +408,10 @@ class CountsCondition
source = post_tag_source
document = 'tag_snapshot.item'
if @definition.name_column(parts.first)
if parts.first.start_with?('aliases_')
aliases, value = @definition.alias_source(parts.first, 'referenced_tag')
return ["#{ source } JOIN #{ aliases }", value]
end
return [source, @definition.name_expression(parts.first, 'referenced_tag')]
end
case parts.first