Module: Upkeep::SQLGlot

Defined in:
lib/upkeep/sqlglot.rb,
lib/upkeep/sqlglot.rb,
lib/upkeep/sqlglot/native.rb,
lib/upkeep/sqlglot/native_library.rb

Defined Under Namespace

Modules: Dialect, Native, NativeLibrary Classes: ColumnRef, Error, GenerateError, LibraryNotFoundError, LineageConfig, LineageGraph, LineageNode, MappingSchema, ParseError, Scope, SemanticError, Source, TableRef, TranspileError

Class Method Summary collapse

Class Method Details

.build_scope(statement) ⇒ Object



347
348
349
350
351
# File 'lib/upkeep/sqlglot.rb', line 347

def build_scope(statement)
  Scope.from_native(
    JSON.parse(Native.build_scope(JSON.generate(statement)))
  )
end

.generate(statement, dialect: nil) ⇒ Object



329
330
331
# File 'lib/upkeep/sqlglot.rb', line 329

def generate(statement, dialect: nil)
  Native.generate(JSON.generate(statement), Dialect.resolve(dialect))
end

.lineage(column, statement, schema, config = nil) ⇒ Object



353
354
355
356
357
358
359
360
361
362
363
364
365
# File 'lib/upkeep/sqlglot.rb', line 353

def lineage(column, statement, schema, config = nil)
  config ||= LineageConfig.new(dialect: schema.dialect)
  LineageGraph.from_native(
    JSON.parse(
      Native.lineage(
        column.to_s,
        JSON.generate(statement),
        JSON.generate(schema.to_dependency_native),
        JSON.generate(config.to_h)
      )
    )
  )
end

.parse(sql, dialect: nil) ⇒ Object



317
318
319
# File 'lib/upkeep/sqlglot.rb', line 317

def parse(sql, dialect: nil)
  JSON.parse(Native.parse(sql.to_s, Dialect.resolve(dialect)))
end

.qualify_columns(statement, schema) ⇒ Object



337
338
339
340
341
342
343
344
345
# File 'lib/upkeep/sqlglot.rb', line 337

def qualify_columns(statement, schema)
  JSON.parse(
    Native.qualify_columns(
      JSON.generate(statement),
      JSON.generate(schema.to_dependency_native),
      schema.dialect
    )
  )
end

.transpile(sql, from: nil, to: nil) ⇒ Object



321
322
323
324
325
326
327
# File 'lib/upkeep/sqlglot.rb', line 321

def transpile(sql, from: nil, to: nil)
  Native.transpile(
    sql.to_s,
    Dialect.resolve(from),
    Dialect.resolve(to)
  )
end

.versionObject



333
334
335
# File 'lib/upkeep/sqlglot.rb', line 333

def version
  Native.version
end