Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

DATEPART Function fails if you use text('YEAR') instead of 'YEAR'

Aberta
#177 4 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Estagnada
Stack de tecnologia
python, sql
Domínio
databases

Direção de pesquisa

Reproduce the DATEPART(text('YEAR'), table_date.c['date_field']) example against the Databricks dialect and inspect the dialect's compilation path for DATEPART. Compare it with DATEPART('YEAR', ...) to identify how text('YEAR') is rendered; done means the text form compiles and executes without treating YEAR as an invalid quoted identifier.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug

Overview

When I attempt to use a datepart function with text('YEAR'), the compile code for the databricks dialect throws and error (see sample code below as it is trying to treat the text part as a quoted identifier common to databricks `.

Environment Information

OS = Windows 2022 Server
Python Version = 3.10.2
Python Package Versions

  • sqlalchemy=1.4.48
  • databricks-sql-connector=2.5.2

Code Sample

from configparser import ConfigParser
from pathlib import Path

from sqlalchemy import create_engine, Identity
from sqlalchemy.orm import Session
from sqlalchemy.engine import URL
from sqlalchemy.schema import Table, Column, MetaData, CreateTable
from sqlalchemy.sql.sqltypes import BIGINT, VARCHAR, DATE
from sqlalchemy.sql.expression import func, and_, or_, text, distinct, insert, union_all


config_path = Path.home() / '.databrickscfg'
config = ConfigParser()
config.read(config_path)

token = config['DEFAULT']['token']

url_info = {
  'drivername': 'databricks',
  'username': 'token',
  'password': token,
  'host': config['DEFAULT']['host'].replace('https://', '').replace('/', ''),
  'port': 43,
  'database': 'curv'
}

catalog = config['DEFAULT']['catalog']
http_path = "/sql/1.0/warehouses/3c0fbf823204df89"

url = URL.create(
  **{key: value for key, value in url_info.items()},
  query={'http_path': http_path, 'catalog': catalog}
)

engine = create_engine(url=url,
                       pool_pre_ping=1)

session = Session(engine)

table_date = Table(
  'test_date',
  MetaData(),
  Column('date_field', DATE, nullable=False)
)

table_date.create(bind=engine)

table_date.insert().values(date_field='2019-02-12')

query = session.query(func.DATEPART(text('YEAR'), table_date.c['date_field']).label('date_field'))

session.execute(query)

Linguagem predominante
Python
Estrelas
233
Forks
152
Merge médio
21h 5min
PRs com merge (30d)
10

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de databricks/databricks-sql-python

Todas as issues de databricks/databricks-sql-python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.