001package gudusoft.gsqlparser.ir.logical.rel; 002 003import gudusoft.gsqlparser.ir.common.SourceAnchor; 004import gudusoft.gsqlparser.ir.logical.RelNode; 005import gudusoft.gsqlparser.ir.logical.RelNodeKind; 006import gudusoft.gsqlparser.ir.logical.RelNodeVisitor; 007 008import java.util.Collections; 009import java.util.List; 010 011/** 012 * Vendor-specific relational node that cannot be normalized. 013 * <p> 014 * Carries the original source anchor and dialect tag so the 015 * feature is never silently dropped or incorrectly flattened. 016 */ 017public final class VendorSpecificRel extends RelNode { 018 private final String dialect; 019 private final String description; 020 private final List<RelNode> inputs; 021 022 public VendorSpecificRel(String dialect, String description, 023 List<RelNode> inputs, SourceAnchor anchor) { 024 super(RelNodeKind.VENDOR_SPECIFIC, anchor); 025 this.dialect = dialect; 026 this.description = description; 027 this.inputs = inputs != null ? Collections.unmodifiableList(inputs) : Collections.<RelNode>emptyList(); 028 } 029 030 public String getDialect() { return dialect; } 031 public String getDescription() { return description; } 032 033 @Override 034 public List<RelNode> getInputs() { return inputs; } 035 036 @Override 037 public <R> R accept(RelNodeVisitor<R> visitor) { return visitor.visitVendorSpecific(this); } 038}