Changeset View
Changeset View
Standalone View
Standalone View
src/KDbQuerySchema.cpp
Show First 20 Lines • Show All 743 Lines • ▼ Show 20 Line(s) | 743 | for (int i = 0; i < internalFieldCount; ++i) { | |||
---|---|---|---|---|---|
744 | KDbQueryColumnInfo *info = cache->internalFields[i]; | 744 | KDbQueryColumnInfo *info = cache->internalFields[i]; | ||
745 | tmpFieldsExpandedWithInternal[fieldsExpandedVectorSize + i] = info; | 745 | tmpFieldsExpandedWithInternal[fieldsExpandedVectorSize + i] = info; | ||
746 | } | 746 | } | ||
747 | } | 747 | } | ||
748 | if (mode == FieldsExpandedMode::WithInternalFieldsAndRecordId) { | 748 | if (mode == FieldsExpandedMode::WithInternalFieldsAndRecordId) { | ||
749 | if (!d->fakeRecordIdField) { | 749 | if (!d->fakeRecordIdField) { | ||
750 | d->fakeRecordIdField = new KDbField(QLatin1String("rowID"), KDbField::BigInteger); | 750 | d->fakeRecordIdField = new KDbField(QLatin1String("rowID"), KDbField::BigInteger); | ||
751 | d->fakeRecordIdCol = new KDbQueryColumnInfo(d->fakeRecordIdField, QString(), true); | 751 | d->fakeRecordIdCol = new KDbQueryColumnInfo(d->fakeRecordIdField, QString(), true); | ||
752 | d->fakeRecordIdCol->d->querySchema = this; | ||||
753 | d->fakeRecordIdCol->d->connection = conn; | ||||
752 | } | 754 | } | ||
753 | tmpFieldsExpandedWithInternal[fieldsExpandedVectorSize + internalFieldCount] = d->fakeRecordIdCol; | 755 | tmpFieldsExpandedWithInternal[fieldsExpandedVectorSize + internalFieldCount] = d->fakeRecordIdCol; | ||
754 | } | 756 | } | ||
755 | } | 757 | } | ||
756 | return tmpFieldsExpandedWithInternal; | 758 | return tmpFieldsExpandedWithInternal; | ||
757 | } | 759 | } | ||
758 | 760 | | |||
759 | if (mode == FieldsExpandedMode::Default) { | 761 | if (mode == FieldsExpandedMode::Default) { | ||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Line(s) | 803 | { | |||
816 | for (KDbField *f : *fields()) { | 818 | for (KDbField *f : *fields()) { | ||
817 | fieldPosition++; | 819 | fieldPosition++; | ||
818 | if (f->isQueryAsterisk()) { | 820 | if (f->isQueryAsterisk()) { | ||
819 | if (static_cast<KDbQueryAsterisk*>(f)->isSingleTableAsterisk()) { | 821 | if (static_cast<KDbQueryAsterisk*>(f)->isSingleTableAsterisk()) { | ||
820 | const KDbField::List *ast_fields = static_cast<KDbQueryAsterisk*>(f)->table()->fields(); | 822 | const KDbField::List *ast_fields = static_cast<KDbQueryAsterisk*>(f)->table()->fields(); | ||
821 | foreach(KDbField *ast_f, *ast_fields) { | 823 | foreach(KDbField *ast_f, *ast_fields) { | ||
822 | KDbQueryColumnInfo *ci = new KDbQueryColumnInfo(ast_f, QString()/*no field for asterisk!*/, | 824 | KDbQueryColumnInfo *ci = new KDbQueryColumnInfo(ast_f, QString()/*no field for asterisk!*/, | ||
823 | isColumnVisible(fieldPosition)); | 825 | isColumnVisible(fieldPosition)); | ||
826 | ci->d->querySchema = this; | ||||
827 | ci->d->connection = conn; | ||||
824 | list.append(ci); | 828 | list.append(ci); | ||
825 | kdbDebug() << "caching (unexpanded) columns order:" << *ci << "at position" << fieldPosition; | 829 | kdbDebug() << "caching (unexpanded) columns order:" << *ci << "at position" << fieldPosition; | ||
826 | cache->columnsOrder.insert(ci, fieldPosition); | 830 | cache->columnsOrder.insert(ci, fieldPosition); | ||
827 | } | 831 | } | ||
828 | } else {//all-tables asterisk: iterate through table list | 832 | } else {//all-tables asterisk: iterate through table list | ||
829 | foreach(KDbTableSchema *table, d->tables) { | 833 | foreach(KDbTableSchema *table, d->tables) { | ||
830 | //add all fields from this table | 834 | //add all fields from this table | ||
831 | const KDbField::List *tab_fields = table->fields(); | 835 | const KDbField::List *tab_fields = table->fields(); | ||
832 | foreach(KDbField *tab_f, *tab_fields) { | 836 | foreach(KDbField *tab_f, *tab_fields) { | ||
833 | //! @todo (js): perhaps not all fields should be appended here | 837 | //! @todo (js): perhaps not all fields should be appended here | ||
834 | // d->detailedVisibility += isFieldVisible(fieldPosition); | 838 | // d->detailedVisibility += isFieldVisible(fieldPosition); | ||
835 | // list.append(tab_f); | 839 | // list.append(tab_f); | ||
836 | KDbQueryColumnInfo *ci = new KDbQueryColumnInfo(tab_f, QString()/*no field for asterisk!*/, | 840 | KDbQueryColumnInfo *ci = new KDbQueryColumnInfo(tab_f, QString()/*no field for asterisk!*/, | ||
837 | isColumnVisible(fieldPosition)); | 841 | isColumnVisible(fieldPosition)); | ||
842 | ci->d->querySchema = this; | ||||
843 | ci->d->connection = conn; | ||||
838 | list.append(ci); | 844 | list.append(ci); | ||
839 | kdbDebug() << "caching (unexpanded) columns order:" << *ci << "at position" << fieldPosition; | 845 | kdbDebug() << "caching (unexpanded) columns order:" << *ci << "at position" << fieldPosition; | ||
840 | cache->columnsOrder.insert(ci, fieldPosition); | 846 | cache->columnsOrder.insert(ci, fieldPosition); | ||
841 | } | 847 | } | ||
842 | } | 848 | } | ||
843 | } | 849 | } | ||
844 | } else { | 850 | } else { | ||
845 | //a single field | 851 | //a single field | ||
846 | KDbQueryColumnInfo *ci = new KDbQueryColumnInfo(f, columnAlias(fieldPosition), isColumnVisible(fieldPosition)); | 852 | KDbQueryColumnInfo *ci = new KDbQueryColumnInfo(f, columnAlias(fieldPosition), isColumnVisible(fieldPosition)); | ||
853 | ci->d->querySchema = this; | ||||
854 | ci->d->connection = conn; | ||||
847 | list.append(ci); | 855 | list.append(ci); | ||
848 | columnInfosOutsideAsterisks.insert(ci, true); | 856 | columnInfosOutsideAsterisks.insert(ci, true); | ||
849 | kdbDebug() << "caching (unexpanded) column's order:" << *ci << "at position" << fieldPosition; | 857 | kdbDebug() << "caching (unexpanded) column's order:" << *ci << "at position" << fieldPosition; | ||
850 | cache->columnsOrder.insert(ci, fieldPosition); | 858 | cache->columnsOrder.insert(ci, fieldPosition); | ||
851 | cache->columnsOrderWithoutAsterisks.insert(ci, fieldPosition); | 859 | cache->columnsOrderWithoutAsterisks.insert(ci, fieldPosition); | ||
852 | 860 | | |||
853 | //handle lookup field schema | 861 | //handle lookup field schema | ||
854 | KDbLookupFieldSchema *lookupFieldSchema = f->table() ? f->table()->lookupFieldSchema(*f) : nullptr; | 862 | KDbLookupFieldSchema *lookupFieldSchema = f->table() ? f->table()->lookupFieldSchema(*f) : nullptr; | ||
Show All 23 Lines | 882 | } else { | |||
878 | visibleColumn->setName( | 886 | visibleColumn->setName( | ||
879 | QString::fromLatin1("[multiple_visible_fields_%1]") | 887 | QString::fromLatin1("[multiple_visible_fields_%1]") | ||
880 | .arg(++numberOfColumnsWithMultipleVisibleFields)); | 888 | .arg(++numberOfColumnsWithMultipleVisibleFields)); | ||
881 | visibleColumn->setExpression( | 889 | visibleColumn->setExpression( | ||
882 | KDbConstExpression(KDbToken::CHARACTER_STRING_LITERAL, QVariant()/*not important*/)); | 890 | KDbConstExpression(KDbToken::CHARACTER_STRING_LITERAL, QVariant()/*not important*/)); | ||
883 | cache->ownedVisibleFields.append(visibleColumn); // remember to delete later | 891 | cache->ownedVisibleFields.append(visibleColumn); // remember to delete later | ||
884 | } | 892 | } | ||
885 | 893 | | |||
886 | lookup_list.append( | 894 | KDbQueryColumnInfo *lookupCi = new KDbQueryColumnInfo( | ||
887 | new KDbQueryColumnInfo(visibleColumn, QString(), true/*visible*/, ci/*foreign*/)); | 895 | visibleColumn, QString(), true /*visible*/, ci /*foreign*/); | ||
896 | lookupCi->d->querySchema = this; | ||||
897 | lookupCi->d->connection = conn; | ||||
898 | lookup_list.append(lookupCi); | ||||
888 | /* | 899 | /* | ||
889 | //add visibleField to the list of SELECTed fields if it is not yes present there | 900 | //add visibleField to the list of SELECTed fields if it is not yes present there | ||
890 | if (!findTableField( visibleField->table()->name()+"."+visibleField->name() )) { | 901 | if (!findTableField( visibleField->table()->name()+"."+visibleField->name() )) { | ||
891 | if (!table( visibleField->table()->name() )) { | 902 | if (!table( visibleField->table()->name() )) { | ||
892 | } | 903 | } | ||
893 | if (!sql.isEmpty()) | 904 | if (!sql.isEmpty()) | ||
894 | sql += QString::fromLatin1(", "); | 905 | sql += QString::fromLatin1(", "); | ||
895 | sql += (escapeIdentifier(visibleField->table()->name(), drvEscaping) + "." | 906 | sql += (escapeIdentifier(visibleField->table()->name(), drvEscaping) + "." | ||
Show All 37 Lines | 940 | } else { | |||
933 | visibleColumn->setName( | 944 | visibleColumn->setName( | ||
934 | QString::fromLatin1("[multiple_visible_fields_%1]") | 945 | QString::fromLatin1("[multiple_visible_fields_%1]") | ||
935 | .arg(++numberOfColumnsWithMultipleVisibleFields)); | 946 | .arg(++numberOfColumnsWithMultipleVisibleFields)); | ||
936 | visibleColumn->setExpression( | 947 | visibleColumn->setExpression( | ||
937 | KDbConstExpression(KDbToken::CHARACTER_STRING_LITERAL, QVariant()/*not important*/)); | 948 | KDbConstExpression(KDbToken::CHARACTER_STRING_LITERAL, QVariant()/*not important*/)); | ||
938 | cache->ownedVisibleFields.append(visibleColumn); // remember to delete later | 949 | cache->ownedVisibleFields.append(visibleColumn); // remember to delete later | ||
939 | } | 950 | } | ||
940 | 951 | | |||
941 | lookup_list.append( | 952 | KDbQueryColumnInfo *lookupCi = new KDbQueryColumnInfo( | ||
942 | new KDbQueryColumnInfo(visibleColumn, QString(), true/*visible*/, ci/*foreign*/)); | 953 | visibleColumn, QString(), true /*visible*/, ci /*foreign*/); | ||
954 | lookupCi->d->querySchema = this; | ||||
955 | lookupCi->d->connection = conn; | ||||
956 | lookup_list.append(lookupCi); | ||||
943 | /* | 957 | /* | ||
944 | //add visibleField to the list of SELECTed fields if it is not yes present there | 958 | //add visibleField to the list of SELECTed fields if it is not yes present there | ||
945 | if (!findTableField( visibleField->table()->name()+"."+visibleField->name() )) { | 959 | if (!findTableField( visibleField->table()->name()+"."+visibleField->name() )) { | ||
946 | if (!table( visibleField->table()->name() )) { | 960 | if (!table( visibleField->table()->name() )) { | ||
947 | } | 961 | } | ||
948 | if (!sql.isEmpty()) | 962 | if (!sql.isEmpty()) | ||
949 | sql += QString::fromLatin1(", "); | 963 | sql += QString::fromLatin1(", "); | ||
950 | sql += (escapeIdentifier(visibleField->table()->name(), drvEscaping) + "." | 964 | sql += (escapeIdentifier(visibleField->table()->name(), drvEscaping) + "." | ||
▲ Show 20 Lines • Show All 438 Lines • Show Last 20 Lines |