রুম

রুম পারসিসটেন্স লাইব্রেরি SQLite-এর উপর একটি অ্যাবস্ট্রাকশন লেয়ার প্রদান করে যাতে SQLite-এর সম্পূর্ণ ক্ষমতা ব্যবহার করার সময় আরও শক্তিশালী ডেটাবেস অ্যাক্সেসের অনুমতি দেওয়া যায়।
লেটেস্ট আপডেট স্টেবল রিলিজ রিলিজ ক্যান্ডিডেট বিটা রিলিজ আলফা রিলিজ
সেপ্টেম্বর 09, 2026 ২.৮.৫ - - -

ডিপেন্ডেন্সি ঘোষণা করা

Room-এর উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই নিজের প্রোজেক্টে Google Maven রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য Google-এর Maven রিপোজিটরি পড়ুন।

রুমের জন্য ডিপেন্ডেন্সির মধ্যে রয়েছে রুম মাইগ্রেশন পরীক্ষা করা এবং রুম RxJava

আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে প্রয়োজনীয় আর্টিফ্যাক্টের জন্য ডিপেন্ডেন্সি যোগ করুন:

কোটলিন

dependencies {
    val room_version = "2.8.5"

    implementation("androidx.room:room-runtime:$room_version")

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See Add the KSP plugin to your project
    ksp("androidx.room:room-compiler:$room_version")

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor("androidx.room:room-compiler:$room_version")

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation("androidx.room:room-ktx:$room_version")

    // optional - RxJava2 support for Room
    implementation("androidx.room:room-rxjava2:$room_version")

    // optional - RxJava3 support for Room
    implementation("androidx.room:room-rxjava3:$room_version")

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation("androidx.room:room-guava:$room_version")

    // optional - Test helpers
    testImplementation("androidx.room:room-testing:$room_version")

    // optional - Paging 3 Integration
    implementation("androidx.room:room-paging:$room_version")
}

গ্রোভি

dependencies {
    def room_version = "2.8.5"

    implementation "androidx.room:room-runtime:$room_version"

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See KSP Quickstart to add KSP to your build
    ksp "androidx.room:room-compiler:$room_version"

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // optional - RxJava2 support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // optional - Test helpers
    testImplementation "androidx.room:room-testing:$room_version"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:$room_version"
}

KAPT প্লাগ-ইন ব্যবহার করা সংক্রান্ত তথ্যের জন্য, KAPT ডকুমেন্টেশন দেখুন।

KSP প্লাগ-ইন ব্যবহার করা সংক্রান্ত তথ্যের জন্য, KSP কুইক-স্টার্ট ডকুমেন্টেশন দেখুন।

Kotlin এক্সটেনশন ব্যবহার করার বিষয়ে তথ্যের জন্য, ktx ডকুমেন্টেশন দেখুন।

নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যোগ করুন দেখুন।

বিকল্প হিসেবে, নন-Android লাইব্রেরির (যেমন, শুধুমাত্র Java বা Kotlin Gradle মডিউল) জন্য Room অ্যানোটেশন ব্যবহার করতে আপনি androidx.room:room-common-এর উপর নির্ভর করতে পারেন।

কম্পাইলার বিকল্প কনফিগার করা হচ্ছে

Room-এ নিম্নলিখিত অ্যানোটেশন প্রসেসর বিকল্প আছে।

room.schemaLocation directory
প্রদত্ত ডিরেক্টরিতে JSON ফাইলে ডেটাবেস স্কিমা এক্সপোর্ট করার সুবিধা চালু করে। আরও তথ্যের জন্য রুম মাইগ্রেশন দেখুন।
room.incremental boolean
Gradle ইনক্রিমেন্টাল অ্যানোটেশন প্রসেসর চালু করে। ডিফল্ট ভ্যালু হল true.
room.generateKotlin boolean
Java-এর পরিবর্তে Kotlin সোর্স ফাইল জেনারেট করুন। KSP প্রয়োজন। ভার্সন 2.7.0 অনুযায়ী ডিফল্ট ভ্যালু হল true। আরও বিবরণের জন্য, এটি কখন চালু করা হয়েছিল তা জানতে ভার্সন 2.6.0 নোট দেখুন।

Room Gradle প্লাগ-ইন ব্যবহার করা

Room ভার্সন ২.৬.০ এবং তার পরবর্তী ভার্সনে, আপনি Room কম্পাইলারের জন্য বিকল্প কনফিগার করতে Room Gradle প্লাগ-ইন ব্যবহার করতে পারবেন। প্লাগ-ইনটি প্রোজেক্টটিকে এমনভাবে কনফিগার করে যাতে জেনারেট করা স্কিমা (যা কম্পাইল টাস্কের আউটপুট এবং অটো-মাইগ্রেশনের জন্য ব্যবহৃত হয়) সঠিকভাবে কনফিগার করা হয় যাতে রিপ্রোডিউসেবল এবং ক্যাশেবল বিল্ড থাকে।

প্লাগ-ইন যোগ করতে, আপনার টপ-লেভেল Gradle বিল্ড ফাইলে, প্লাগ-ইন ও তার ভার্সন উল্লেখ করুন।

গ্ৰুভি

plugins {
    id 'androidx.room' version "$room_version" apply false
}

Kotlin

plugins {
    id("androidx.room") version "$room_version" apply false
}

মডিউল-লেভেল Gradle বিল্ড ফাইলে, প্লাগ-ইন প্রয়োগ করুন এবং room এক্সটেনশন ব্যবহার করুন।

গ্ৰুভি

plugins {
    id 'androidx.room'
}

android {
    ...
    room {
        schemaDirectory "$projectDir/schemas"
    }
}

Kotlin

plugins {
    id("androidx.room")
}

android {
    ...
    room {
        schemaDirectory("$projectDir/schemas")
    }
}

Room Gradle Plugin ব্যবহার করার সময় schemaDirectory সেট করা প্রয়োজন। এটি ফ্লেভার করা ফোল্ডারে স্কিমা ফাইল আউটপুট করার জন্য Room কম্পাইলার এবং বিভিন্ন কম্পাইল টাস্ক ও এর ব্যাকএন্ড (javac, KAPT, KSP) কনফিগার করবে, যেমন schemas/flavorOneDebug/com.package.MyDatabase/1.json। যাচাইকরণ ও অটোমেটিক মাইগ্রেশনের জন্য ব্যবহার করতে হলে, এইসব ফাইলকে রেপোজিটরিতে চেক-ইন করতে হবে।

Room Gradle Plugin-এর সব ভার্সনে কিছু বিকল্প কনফিগার করা যায় না, এমনকি সেগুলি Room কম্পাইলারের সাথে কাজ করলেও। নিচের সারণীতে প্রতিটি বিকল্পের তালিকা দেওয়া আছে এবং room এক্সটেনশন ব্যবহার করে সেই বিকল্প কনফিগার করার জন্য Room Gradle প্লাগ-ইনের যে ভার্সন যোগ করা হয়েছে সেটি দেখানো হয়েছে। আপনার ভার্সন যদি এর থেকে পুরনো হয়, অথবা এই বিকল্প যদি এখনও কাজ না করে, তাহলে আপনি এর পরিবর্তে অ্যানোটেশন প্রসেসর বিকল্প ব্যবহার করতে পারেন।

Option এই ভার্সন থেকে
room.schemaLocation (ফাঁকা রাখা যাবে না) 2.6.0
room.incremental -
room.generateKotlin -

অ্যানোটেশন প্রসেসর বিকল্প ব্যবহার করা

আপনি Room Gradle Plugin ব্যবহার না করলে অথবা আপনার প্লাগ-ইনের ভার্সনে আপনি যে বিকল্প চান সেটি কাজ না করলে, আপনি বিল্ড ডিপেন্ডেন্সি যোগ করুন-এ বর্ণিত অ্যানোটেশন প্রসেসর বিকল্প ব্যবহার করে Room কনফিগার করতে পারবেন। আপনি কীভাবে অ্যানোটেশন বিকল্প নির্দিষ্ট করবেন তা নির্ভর করে আপনি Room-এর জন্য KSP বা KAPT ব্যবহার করেন কিনা তার উপর।

গ্ৰুভি

// For KSP
ksp {
    arg("option_name", "option_value")
    // other otions...
}

// For javac and KAPT
android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += [
                    "option_name":"option_value",
                    // other options...
                    ]
            }
        }
    }
}

Kotlin

// For KSP
ksp {
    arg("option_name", "option_value")
    // other options...
}

// For javac and KAPT
android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += mapOf(
                    "option_name" to "option_value",
                    // other options...
                )
            }
        }
    }
}

room.schemaLocation হল একটি ডিরেক্টরি এবং এটি কোনও আদিম টাইপ নয়, তাই এই বিকল্প যোগ করার সময় CommandLineArgumentsProvider ব্যবহার করা প্রয়োজনীয়, যাতে আপ-টু-ডেট চেক করার সময় Gradle এই ডিরেক্টরি সম্পর্কে জানতে পারে। আপনার Room ডেটাবেস মাইগ্রেট করুন CommandLineArgumentsProvider-এর সম্পূর্ণ প্রয়োগ দেখায় যা স্কিমা লোকেশন প্রদান করে।

মতামত

আপনার মতামত Jetpack-কে আরও ভালো করে তুলতে সাহায্য করে। আপনি নতুন কোনও সমস্যা খুঁজে পেলে বা এই লাইব্রেরি উন্নত করার জন্য কোনও আইডিয়া থাকলে, আমাদের জানান। নতুন সমস্যা তৈরি করার আগে এই লাইব্রেরিতে আগে থেকে থাকা সমস্যা দেখে নিন। আপনি তারকাচিহ্ন বোতামে ক্লিক করে আগে থেকে থাকা কোনও সমস্যাতে আপনার ভোট যোগ করতে পারবেন।

নতুন সমস্যা তৈরি করুন

আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।

ভার্সন 2.8

ভার্সন 2.8.5

সেপ্টেম্বর 09, 2026

androidx.room:room-*:2.8.5 রিলিজ করা হয়েছে। ভার্সন 2.8.5-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ডেটাবেস বন্ধ হয়ে যাওয়ার পরে রুম সাসপেন্ড করা সংক্রান্ত কোয়েরি ও ইনভ্যালিডেশন ট্র্যাকার অপারেশন কল করা হলে, এখন IllegalStateException দেখানো হবে। (Ic0166, b/543076356)

ভার্সন 2.8.4

১৯ নভেম্বর, ২০২৫

androidx.room:room-*:2.8.4 রিলিজ করা হয়েছে। ভার্সন 2.8.4-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • SQLiteDriver ব্যবহার করার সময় Room-এর কানেকশন পুলে একটি প্রিপেয়ার্ড স্টেটমেন্ট ক্যাশে যোগ করা হয়েছে, যার মধ্যে ইন্টার্নালি কোনও পুল নেই, যেমন BundledSQLiteDriver। এটি একই SQL স্টেটমেন্ট বারবার এক্সিকিউট করার সময় পারফর্ম্যান্স উন্নত করে। (5f43bc, b/319653917)
  • স্কিমা যাচাইকরণে প্রকৃত / প্রত্যাশিত ত্রুটি মেসেজে তথ্য অনুপস্থিত থাকার সমস্যা সমাধান করা হয়েছে। (8b23da, b/454531083)
  • টাইপ ভেরিয়েবল সহ @Transaction DAO ফাংশন মিসিং থাকা Room-এর Kotlin কোড জেনারেশন সংক্রান্ত সমস্যার সমাধান করুন। (a8365d, b/251316420)
  • SupportSQLiteDatabase API-এর মতো একই ব্লকিং আচরণ বজায় রেখে থ্রেড হপ এড়িয়ে Room-এর SupportSQLite র‍্যাপার পারফর্ম্যান্স উন্নত করুন। (fc70e4)

ভার্সন 2.8.3

২২ অক্টোবর, ২০২৫

androidx.room:room-*:2.8.3 রিলিজ করা হয়েছে। ভার্সন ২.৮.৩-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Cursor-এর উপর দিয়ে ইটারেট করার সময় অতিরিক্ত JNI কল ও পারফর্ম্যান্সের উল্লেখযোগ্য অবনতি ঘটানো Room SQLite Wrapper সংক্রান্ত পারফর্ম্যান্স সমস্যার সমাধান করা হয়েছে।

ভার্সন 2.8.2

৮ অক্টোবর, ২০২৫

androidx.room:room-*:2.8.2 রিলিজ করা হয়েছে। ভার্সন ২.৮.২-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ফ্লো এমিশন থেকে অটোমেটিক বন্ধ হয়ে যাওয়া ডেটাবেস আবার খোলার সময় হতে পারে এমন ডেডলক সংক্রান্ত সমস্যার সমাধান করা হয়েছে (b/446643789)।

ভার্সন 2.8.1

২৪ সেপ্টেম্বর, ২০২৫

androidx.room:room-*:2.8.1 রিলিজ করা হয়েছে। ভার্সন ২.৮.১-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • সাসপেন্ড ল্যামডা সহ DAO ফাংশন প্রসেস করার সময় প্রসেসর ক্র্যাশ হওয়ার সমস্যার সমাধান করা। (b/442220723).
  • ফ্লো যাতে লেটেস্ট আপডেট পেতে পারে তার জন্য রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে।

ভার্সন 2.8.0

১০ সেপ্টেম্বর, ২০২৫

androidx.room:room-*:2.8.0 রিলিজ করা হয়েছে। ভার্সন 2.8.0-এ এইসব কমিট আছে।

2.7.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন:

  • নতুন আর্টিফ্যাক্ট androidx.room:room-sqlite-wrapper যোগ করা হয়েছে, যাতে কনফিগার করা SQLiteDriver সহ RoomDatabase থেকে SupportSQLiteDatabase র‍্যাপার পাওয়ার জন্য API আছে। র‍্যাপার পেতে, নতুন এক্সটেনশন ফাংশন RoomDatabase.getSupportWrapper() ব্যবহার করুন। SupportSQLiteDatabase-এর ব্যবহার বজায় রাখতে এটি মানানসই আর্টিফ্যাক্ট। সাধারণত roomDatabase.openHelper.writableDatabase থেকে এটি পাওয়া যায়, এমনকি Room ডেটাবেস SQLiteDriver-এর সাথে কনফিগার করা থাকলেও। যেসব কোডবেস SQLiteDriver API গ্রহণ করতে চায় কিন্তু SupportSQLite API-এর ব্যাপক ব্যবহার করে এবং BundledSQLiteDriver-এর সুবিধা নিতে চায়, তাদের জন্য এই র‍্যাপারটি ইনক্রিমেন্টাল মাইগ্রেশনের ক্ষেত্রে উপযোগী। আরও তথ্যের জন্য মাইগ্রেশন গাইড দেখুন।
  • Watch OS এবং Tv OS-এর জন্য KMP টার্গেটে অতিরিক্ত সহায়তা যোগ করা হয়েছে।
  • লাইব্রেরির Android minSDK, API 21 থেকে API 23-এ আপডেট করা হয়েছে

ভার্সন 2.8.0-rc02

২৭ আগস্ট, ২০২৫

androidx.room:room-*:2.8.0-rc02 রিলিজ করা হয়েছে। ভার্সন 2.8.0-rc02-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • API 21 থেকে API 23-এ minSDK আপডেট করুন (Ibdfca, b/380448311, b/435705964, b/435705223)
  • Room Gradle Plugin-এর সাথে মানানসই ন্যূনতম Android Gradle Plugin (AGP) ভার্সন 8.1 থেকে 8.4-এ আপডেট করুন। (Ia0d28)

সমস্যার সমাধান

  • প্রি-প্যাকেজড ডেটাবেসের জন্য মাইগ্রেশন পাথ উপলভ্য থাকা সত্ত্বেও (b/432634197) ধ্বংসাত্মক মাইগ্রেশন পারফর্ম করা হচ্ছে এমন একটি সমস্যার সমাধান করা হয়েছে।

ভার্সন 2.8.0-rc01

১৩ আগস্ট, ২০২৫

androidx.room:room-*:2.8.0-rc01 রিলিজ করা হয়েছে। ভার্সন 2.8.0-rc01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • পুরনো @RequiresApi(21) অ্যানোটেশন (Ic4792, I9103b) সরানো হচ্ছে

সমস্যার সমাধান

  • রেস কন্ডিশন সংক্রান্ত সমস্যা সমাধান করা হয়েছে যেখানে অ্যাসিঙ্ক্রোনাস মাল্টি-কোয়েরি/রাইট পরিস্থিতিতে রুম ফ্লো লেটেস্ট কোয়েরি ফলাফল এমিট করত না। (Ic9a3c)

ভার্সন 2.8.0-beta01

১ আগস্ট, ২০২৫

androidx.room:room-*:2.8.0-beta01 রিলিজ করা হয়েছে। 2.8.0-beta01 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ধ্বংসাত্মক মাইগ্রেশনের সময় টেবিল ও ভিউয়ের নাম এখন সঠিকভাবে এস্কেপ করা হয়। (9e55f8, b/427095319)

ভার্সন 2.8.0-alpha01

১৬ জুলাই, ২০২৫

androidx.room:room-*:2.8.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 2.8.0-alpha01-এ এইসব কমিট আছে।

নতুন ফিচার

  • নতুন আর্টিফ্যাক্ট androidx.room:room-sqlite-wrapper যোগ করা হয়েছে, যাতে কনফিগার করা SQLiteDriver সহ RoomDatabase-এর SupportSQLiteDatabase র‍্যাপার পাওয়ার জন্য API আছে। র‍্যাপার পেতে, নতুন এক্সটেনশন ফাংশন RoomDatabase.getSupportWrapper() ব্যবহার করুন। SupportSQLiteDatabase-এর ব্যবহার বজায় রাখতে এটি মানানসই আর্টিফ্যাক্ট। সাধারণত RoomDatabase.openHelper.writableDatabase থেকে এটি পাওয়া যায়, এমনকি Room ডেটাবেস SQLiteDriver-এর সাথে কনফিগার করা থাকলেও। যেসব কোডবেস SQLiteDriver ব্যবহার করতে চায় কিন্তু SupportSQLite API-এর ব্যাপক ব্যবহার করে এবং BundledSQLiteDriver-এর সুবিধা নিতে চায়, তাদের জন্য এই র‍্যাপারটি ইনক্রিমেন্টাল মাইগ্রেশনের ক্ষেত্রে সহায়ক। (Icf6ac)
  • Watch OS ও TV OS-এর জন্য KMP টার্গেট যোগ করুন (I228f6, b/394238801)

সমস্যার সমাধান

  • সাসপেন্ড করা ট্রানজ্যাকশন ও AndroidSQLiteDriver ব্যবহার করার সময় মাঝে মাঝে হতে পারে এমন ডেডলক সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (b/415006268)

ভার্সন 2.7

ভার্সন 2.7.2

১৮ জুন, ২০২৫

androidx.room:room-*:2.7.2 রিলিজ করা হয়েছে। ভার্সন 2.7.2-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • KSP-এর মাধ্যমে নেটিভ সোর্স প্রসেস করার সময় কখনও কখনও স্কিমা এক্সপোর্ট না করে অ্যানোটেশন ভ্যালু ভুলভাবে রিড করার সমস্যা সমাধান করা হয়েছে। (b/416549580)
  • SQL-এ লিডিং কমেন্ট থাকলে, স্টেটমেন্টগুলি এমনভাবে এক্সিকিউট করা হত যেন সেগুলি নন-রিড কোয়েরি। এই সমস্যার সমাধান করা হয়েছে। (b/413061402)
  • স্কিমা ডিরেক্টরি খালি থাকার কারণে Room-এর Gradle প্লাগ-ইন কনফিগার করতে না পারার সমস্যা সমাধান করুন। (b/417823384)
  • কানেকশন পেতে বেশি সময় লাগলে আর SQLiteException থ্রো করা হবে না, পরিবর্তে লাইব্রেরি একটি লগ মেসেজ পাঠাবে। iOS সাসপেন্ড করার কারণে লুপার কাজ করে না, তাই লগিং করার পরিবর্তে থ্রো করা হয়। এর ফলে কানেকশন পাওয়ার জন্য Kotlin Coroutine-এ হওয়া টাইম-আউটকে Room ভুলভাবে ব্যাখ্যা করে। এর ফলে iOS অ্যাপ ব্যাকগ্রাউন্ডে চলে গেলে এবং পরে কোনও ডেটাবেস অপারেশনের মাঝে আবার চালু হলে, ব্যতিক্রম থ্রো করা যায় না। (b/422448815)

ভার্সন 2.7.1

২৩ এপ্রিল, ২০২৫

androidx.room:room-*:2.7.1 রিলিজ করা হয়েছে। ভার্সন ২.৭.১-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • প্রদান করা টাইপ কনভার্টার যাচাইকরণের সময় হওয়া IndexOutOfBoundsException সমস্যার সমাধান করুন। (b/409804755).
  • Room-এর সাথে RoomDatabase.runInTransaction() কনফিগার করা হলে SQLiteDriver কাজ করে। (b/408364828).

ভার্সন 2.7.0

৯ এপ্রিল, ২০২৫

androidx.room:room-*:2.7.0 রিলিজ করা হয়েছে। 2.7.0 ভার্সনে এইসব কমিট রয়েছে।

2.6.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • Kotlin Multiplatform (KMP) সহায়তা: এই রিলিজে, Room-কে রিফ্যাক্টর করে Kotlin Multiplatform (KMP) লাইব্রেরি করা হয়েছে। বর্তমানে Android, iOS, JVM (ডেস্কটপ), নেটিভ Mac ও নেটিভ Linux প্ল্যাটফর্মে কাজ করে। Room KMP ব্যবহার শুরু করার বিষয়ে আরও জানতে, অফিসিয়াল Room KMP ডকুমেন্টেশন দেখুন। KMP-এর সাথে কাজ করার সুবিধা হিসেবে, Room-কে SQLiteDriver-এর সাথেও কনফিগার করা যেতে পারে। আগে থেকে থাকা কোনও অ্যাপকে কীভাবে ড্রাইভার API ও Room KMP-তে মাইগ্রেট করতে হয় সেই বিষয়ে জানতে, মাইগ্রেশন ডকুমেন্টেশন দেখুন।
  • KSP-এর মাধ্যমে প্রসেস করা হলে, ডিফল্ট হিসেবে KSP-তে Kotlin কোড জেনারেশন চালু করা হয়েছে। KAPT বা শুধুমাত্র Java প্রোজেক্টের জন্য, Room এখনও Java সোর্স তৈরি করবে।
  • Kotlin 2.0 ও KSP2: Room এখন Kotlin 2.0 ভাষাকে টার্গেট করে এবং এর জন্য প্রজেক্টকেও Kotlin 2.0 ও সমতুল্য বা এর পরবর্তী যেকোনও ভার্সনে কম্পাইল করতে হবে। KSP2-এর জন্য সহায়তাও যোগ করা হয়েছে এবং Kotlin 2.0 বা তার পরবর্তী যেকোনও ভার্সনের সাথে Room ব্যবহার করার সময় এটি ব্যবহার করার সাজেশন দেওয়া হয়।

ভার্সন 2.7.0-rc03

২৬ মার্চ, ২০২৫

androidx.room:room-*:2.7.0-rc03 রিলিজ করা হয়েছে। ভার্সন 2.7.0-rc03-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Room ব্লকিং API চলাকালীন থ্রেড বাধা পেলে আর InterruptedException হয় না, এর মধ্যে DAO ফাংশন ব্লক করাও (b/400584611) অন্তর্ভুক্ত।
  • SQLException: Error code: 5, message: Timed out attempting to acquire a reader connection. ও এই ধরনের সমস্যা (b/380088809) কমানোর জন্য Room-এর কানেকশন পুল আবার প্রয়োগ করা হয়েছে।

Version 2.7.0-rc02

১২ মার্চ, ২০২৫

androidx.room:room-*:2.7.0-rc02 রিলিজ করা হয়েছে। 2.7.0-rc02 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • FTS টেবিলে নতুন কলাম ভুলভাবে ম্যানেজ করা অটো মাইগ্রেশন সংক্রান্ত সমস্যার সমাধান করুন। (b/348227770, Ic53f3)
  • KSP-এর মাধ্যমে নন-JVM সোর্স প্রসেস করার সময় NullPointerException-এর কারণে রুম-কম্পাইলার ক্র্যাশ হওয়ার সমস্যা সমাধান করুন। (b/396607230, I693c9)
  • রাইটার কানেকশন ব্যবহার করা হয়ে গেলে, Room টেবিল বাতিল না করার সমস্যা সমাধান করা হয়েছে। (b/340606803, I73ef6)

Version 2.7.0-rc01

২৬ ফেব্রুয়ারি, ২০২৫

androidx.room:room-*:2.7.0-rc01 রিলিজ করা হয়েছে। ভার্সন 2.7.0-rc01-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • প্রাথমিক ডেটাবেস কানেকশনে Room busy_timeout সেট না করার ফলে SQLException: Error code: 5, message: database is locked সংক্রান্ত সমস্যা (I93208, b/380088809) দেখা দেওয়ার সমস্যার সমাধান করা হয়েছে।
  • Room-এর কম্পাইলারের একটি সমস্যার সমাধান করা হয়েছে, যার ফলে Kotlin 2.1.x এবং KSP1-এ নেটিভ সোর্স সেট (যেমন iOS) প্রসেস করার সময় KSP প্রসেসর ক্র্যাশ করত (I883b8, b/396607230)।

ভার্সন 2.7.0-beta01

১২ ফেব্রুয়ারি, ২০২৫

androidx.room:room-*:2.7.0-beta01 রিলিজ করা হয়েছে। ভার্সন 2.7.0-beta01-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • RoomDatabase.inTransaction() বন্ধ থাকা ডেটাবেস খোলার সময় হওয়া সমস্যা সমাধান করুন এবং ডেটাবেস বন্ধ থাকলে দ্রুত মিথ্যা উত্তর দিন (b/325432967)।
  • Kotlin ইনলাইন / ভ্যালু ক্লাস (b/388299754) সহ DAO ফাংশন প্রসেস করার সময় Room-এর কম্পাইলারে একটি ক্র্যাশ (IllegalArgumentException: not a valid name) ঠিক করুন।
  • room-runtime-এর JVM আর্টিফ্যাক্টে Proguard নিয়ম অন্তর্ভুক্ত করুন যাতে তৈরি করা ডেটাবেস ইমপ্লিমেন্টেশনের ডিফল্ট কনস্ট্রাক্টর সরানো না হয়, কারণ এটি Room-এর ডিফল্ট ইনিশিয়ালাইজেশন দ্বারা ব্যবহৃত হয় যা রিফ্লেকশন ব্যবহার করে (b/392657750)।

Version 2.7.0-alpha13

২৯ জানুয়ারি, ২০২৫

androidx.room:room-*:2.7.0-alpha13 রিলিজ করা হয়েছে। ভার্সন 2.7.0-alpha13-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Room এখন Kotlin ল্যাঙ্গুয়েজ 2.0-কে টার্গেট করে এবং প্রোজেক্টগুলিকেও Kotlin 2.0 এবং সমতুল্য বা উচ্চতর ল্যাঙ্গুয়েজ ভার্সনের সাথে কম্পাইল করতে হবে। (I8efb0, b/315461431, b/384600605)

সমস্যার সমাধান

  • Android-এ পাথ ব্যবহার না করে সাধারণ নাম ব্যবহার করা হলে এবং অ্যাপের ডেটা ডিরেক্টরিতে ডেটাবেস ফাইলের সমাধান করা পাথ খুঁজে না পাওয়া গেলে, Room KMP ডেটাবেস বিল্ডারে হওয়া সমস্যার সমাধান করা। (I83315, b/377830104)
  • Room Gradle প্লাগ-ইনের সাথে হওয়া একটি সমস্যার সমাধান করা হয়েছে যেখানে স্কিমা ইনপুট ও আউটপুট কনফিগার করার ফলে Android প্রোজেক্টে সমস্যা হচ্ছিল: property 'inputDirectory' is final and cannot be changed any further. (1dbb4c, b/376071291)
  • KSP2-এর জন্য Room Gradle Plugin-এ সহায়তা যোগ করা হয়েছে। এর ফলে, প্লাগ-ইন দ্বারা স্কিমা ডিরেক্টরি সঠিকভাবে সেট-আপ না করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Iec3c4, b/379159770)

এক্সটার্নাল কন্ট্রিবিউশন

  • Room পেজিং ইন্টিগ্রেশনের সাথে সম্পর্কিত একটি সমস্যার সমাধান করুন যার কারণে রিফ্রেশ করার প্রাথমিক কী তালিকার শেষের খুব কাছাকাছি থাকলে UI জাম্প করে। ইভাকে ধন্যবাদ! (I2abbe, b/389729367)

ভার্সন 2.7.0-alpha12

১১ ডিসেম্বর, ২০২৪

androidx.room:room-*:2.7.0-alpha12 রিলিজ করা হয়েছে। 2.7.0-alpha12 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ইনভ্যালিডেশন ট্র্যাকিংয়ের জন্য Room ইন-মেমরি টেবিল ব্যবহার করবে কিনা তা কনফিগার করতে পরীক্ষামূলক API RoomDatabase.Builder.setInMemoryTrackingMode() যোগ করুন। (I2a9b2, b/185414040)

সমস্যার সমাধান

  • ডেস্ট্রাক্টিভ মাইগ্রেশন এখন ভিউ ড্রপ করে যাতে সেগুলি আবার তৈরি করা যায়, allowDestructiveMigrationForAllTables চালু (KMP ডিফল্ট) থাকলে এবং বন্ধ থাকলে, একই ধরনের আচরণ করে। (0a3e83, b/381518941)

Version 2.7.0-alpha11

৩০ অক্টোবর, ২০২৪

androidx.room:room-*:2.7.0-alpha11 রিলিজ করা হয়েছে। 2.7.0-alpha11 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • রুম-পেজিংয়ের জন্য RawRoomQuery রিসিভ করে এমন সাসপেন্ড ফাংশন হতে, নতুন যোগ করা convertRows() মেথড সিগনেচার আবার দেখুন। (Ie57b5, b/369136627)

সমস্যার সমাধান

  • PagingSource-এর সাথে @Relation ব্যবহার করার সময় রুম-পেজিংয়ে ভুল কোড তৈরি হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে।

Version 2.7.0-alpha10

১৬ অক্টোবর, ২০২৪

androidx.room:room-*:2.7.0-alpha10 রিলিজ করা হয়েছে। 2.7.0-alpha10 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Android ও JVM নয় এমন প্ল্যাটফর্মে ByteBuffer-এর সাথে সম্পর্ককে সাপোর্ট করার জন্য ইন্টার্নাল ByteArrayWrapper ক্লাস তৈরি করুন। (I75543, b/367205685)
  • কলামের ডেটা টাইপ রিট্রিভ করা চালু করতে, বিভিন্ন SQLITE_DATA_* ফলাফল কনস্ট্যান্টের সাথে SQLiteStatement.getColumnType() যোগ করুন। (I1985c, b/369636251)

ভার্সন 2.7.0-alpha09

২ অক্টোবর, ২০২৪

androidx.room:room-*:2.7.0-alpha09 রিলিজ করা হয়েছে। 2.7.0-alpha09 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • room-paging-এর KMP ইমপ্লিমেন্টেশন সংক্রান্ত সমস্যার সমাধান করুন, যা রিড কানেকশনে রাইট ট্রানজ্যাকশন শুরু করার কারণে Error code: 8, message: attempt to write a readonly database-এর কারণ হতে পারে। (b/368380988)

ভার্সন 2.7.0-alpha08

১৮ সেপ্টেম্বর, ২০২৪

androidx.room:room-*:2.7.0-alpha08 রিলিজ করা হয়েছে। 2.7.0-alpha08 ভার্সনে এইসব কমিট আছে।

নতুন ফিচার

  • room-paging আর্টিফ্যাক্ট KMP-এর সাথে মানানসই হওয়ার জন্য মাইগ্রেট করা হয়েছে। (Ib8756, b/339934824)
  • API invalidationTrackerFlow()-কে InvalidationTracker.createFlow() হিসেবে ফার্স্ট-পার্টি API হিসেবে সাধারণীকরণ করা হয়েছে এবং এখন এটি KMP প্রোজেক্টে Android নয় এমন সোর্স সেটের জন্য উপলভ্য। (I1fbfa, (I8fb29), b/329291639, b/329315924)

API-তে পরিবর্তন

  • Room-এ Cursor শব্দটি ব্যবহার করা সমস্ত সতর্কতা ও সমস্যার মেসেজ সরিয়ে দেওয়া বা পরিবর্তন করা হয়েছে, কারণ Cursor শব্দটি Room-এর KMP ভার্সনে ব্যবহার করার জন্য আর সঠিক সাধারণ শব্দ নয়। (Id8cd9, b/334087492)

সমস্যার সমাধান

  • JVM নয় এমন প্ল্যাটফর্মের জন্য Room KMP UUID ব্যবহার করে কোড এমিট করার চেষ্টা করলে যে সমস্যা হত, তা সমাধান করা হয়েছে। (b/362994709)
  • Compose Multiplatform-এর সাথে KMP প্রজেক্টে ব্যবহার করার সময় Room Gradle Plugin-এর সাথে হওয়া একটি সমস্যার সমাধান করা হয়েছে, যার ফলে ‘Cannot change attributes of configuration … after it has been locked for mutation’-এর মতো সমস্যা হত। (b/343408758)

ভার্সন 2.7.0-alpha07

২১ আগস্ট, ২০২৪

androidx.room:room-*:2.7.0-alpha07 রিলিজ করা হয়েছে। ভার্সন 2.7.0-alpha07-এ এইসব কমিট আছে।

নতুন ফিচার

  • Room Gradle প্লাগ-ইন এখন Android Instrumentation Test রিসোর্স সোর্সে এক্সপোর্ট করা স্কিমা অটোমেটিক যোগ করবে যাতে সেগুলি MigrationTestHelper ব্যবহার করতে পারে।

সমস্যার সমাধান

  • জেনারেট করা ‘actual’-এর সাথে সম্পর্কিত একটি সমস্যার সমাধান করা হয়েছে, যেখানে RoomDatabaseConstructor-এ initialize ফাংশনে ‘actual’ মডিফায়ার অনুপস্থিত ছিল, যদি ‘expect’ ডিক্লারেশনেও এই ধরনের ফাংশন ওভাররাইড করা হয়। (359631627)
  • RoomDatabaseConstructor-এর জেনারেট করা ‘আসল’ ভ্যালু ‘প্রত্যাশিত’ ঘোষণার দৃশ্যমানতার সাথে মিলছে না, এই সমস্যার সমাধান করা হয়েছে। (358138953)

Version 2.7.0-alpha06

৭ আগস্ট, ২০২৪

androidx.room:room-*:2.7.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 2.7.0-alpha06-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • KMP প্রোজেক্টে RoomDatabase-এর জন্য ইনস্ট্যানসিয়েশন সেট-আপ পরিবর্তন করুন।

Kotlin 2.0 কম্পাইলেশন মডেলের কারণে, instantiateImpl() নামের একটি ফাংশন রেফার করার কৌশলটি আর কার্যকর নয়। দুটি নতুন API, @ConstructedBy এবং RoomDatabaseConstructor চালু করা হয়েছে যা instantiateImpl() স্ট্র্যাটেজিকে প্রতিস্থাপন করে। নতুন স্ট্র্যাটেজি নিচে উল্লেখ করা হল:

  1. RoomDatabaseConstructor প্রয়োগ করে এমন একটি expect অবজেক্ট নির্ধারণ করুন

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. @ConstructedBy ব্যবহার করে @Database ঘোষণার সাথে অবজেক্ট লিঙ্ক করুন

      @Database(...)
      @ConstructedBy(MyDatabaseCtor::class) // NEW
      abstract class MyDatabase : RoomDatabase
    
  3. ফ্যাক্টরি আর্গুমেন্ট পাস না করেই নতুন ডেটাবেস ইনস্ট্যান্স তৈরি করা

      fun createNewDatabase(path: String) =
        Room.databaseBuilder<AppDatabase>(name = path)
          .setDriver(BundledSQLiteDriver())
          .setQueryCoroutineContext(Dispatchers.IO)
          .build()
    

b/316978491, b/338446862 এবং b/342905180 সংক্রান্ত সমস্যার সমাধান করে

  • @RawQuery-এর জন্য সহায়তা, RoomRawQuery নামের একটি নতুন API যোগ করে Room KMP-তে দেওয়া হয়েছে, যা SupportSQLiteQuery-এর মতো, কারণ এটিতে র SQL স্ট্রিং এবং একটি স্টেটমেন্টে আর্গুমেন্ট বাইন্ড করার ফাংশন থাকে। @RawQuery অ্যানোটেট করা ফাংশন এখন তাদের সিঙ্গল প্যারামিটার হিসেবে RoomRawQuery গ্রহণ করতে পারে। (Iea844, b/330586815)
  • setQueryCallback()-এর একটি ওভারলোড যোগ করুন যা CoroutineContext গ্রহণ করে। (Id66ff, b/309996304)
  • linuxArm64 Kotlin Multiplatform টার্গেটের (I139d3, b/338268719) জন্য সহায়তা যোগ করা হয়েছে

সমস্যার সমাধান

  • Android নয় এমন টার্গেটে Room ভুলভাবে recursiveFetchArrayMap-এ কল জেনারেট করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (710c36, b/352482325)
  • KMP প্রোজেক্টে, কখনও কখনও Room-এ ‘কানেক্ট করার চেষ্টা করার সময় শেষ হয়ে গেছে’ সংক্রান্ত ব্যতিক্রম দেখানোর সমস্যার সমাধান করা হয়েছে। (fa72d0, b/347737870)
  • অটো-মাইগ্রেশনে হওয়া একটি সমস্যার সমাধান করা হয়েছে, যেখানে অন্যান্য টেবিল নতুন ফরেন কী অনুযায়ী নিজেদের স্কিমা পরিবর্তন করার আগেই ফরেন কী চেক করা হত। (7672c0, b/352085724)

ভার্সন 2.7.0-alpha05

১০ জুলাই, ২০২৪

androidx.room:room-*:2.7.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 2.7.0-alpha05-এ এইসব কমিট আছে।

API সংক্রান্ত পরিবর্তন

  • SQLiteKt-এর নাম পরিবর্তন করে SQLite এবং BundledSQLiteKt-এর নাম পরিবর্তন করে BundledSQLite করা হয়েছে। (I8b501)

সমস্যার সমাধান

  • AndroidSQLiteDriver ব্যবহার করার সময় RoomDatabase ডেডলক হয়ে যাওয়া বা কানেকশন টাইম-আউট সংক্রান্ত সমস্যার সমাধান করা হয়েছে।

ভার্সন 2.7.0-alpha04

১২ জুন, ২০২৪

androidx.room:room-*:2.7.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 2.7.0-alpha04-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • DAO-তে একাধিক ম্যাপ রিটার্ন টাইপ সংজ্ঞায়িত করা হলে, রুমের অ্যানোটেশন প্রসেসর একটি ইনকম্প্যাটিবল KMP কোড তৈরি করবে এমন একটি সমস্যা সমাধান করা হয়েছে। (b/340983093)
  • @Database অ্যানোটেটেড ক্লাসে কোনও প্যাকেজ না থাকলে, জেনারেট করা ডেটাবেস ইমপ্লিমেন্টেশন খুঁজে পেতে Room-এর ব্যর্থতা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (b/342097292)
  • অটো-ক্লোজ ও মাল্টি-ইনস্ট্যান্স ইনভ্যালিডেশন চালু করার সময় কখনও কখনও ConcurrentModificationException হওয়ার সমস্যা সমাধান করা হয়েছে, কারণ ডেটাবেস আইডল থাকার কারণে অটো-ক্লোজ হয়ে গিয়েছিল।

ভার্সন 2.7.0-alpha03

২৯ মে, ২০২৪

androidx.room:room-*:2.7.0-alpha03 রিলিজ করা হয়েছে। 2.7.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Kotlin 2.0 ও KSP 2.0 সংক্রান্ত বিভিন্ন সমস্যার সমাধান করা হয়েছে। মনে রাখবেন, KSP 2 সহ Kotlin 2.0-এর কাজ এখনও সম্পূর্ণ হয়নি এবং টিম নতুন কম্পাইলারে বিভিন্ন API ও আচরণগত পরিবর্তন নিয়ে কাজ করছে। (b/314151707)

ভার্সন 2.7.0-alpha02

১৪ মে, ২০২৪

androidx.room:room-*:2.7.0-alpha02 রিলিজ করা হয়েছে। 2.7.0-alpha02 ভার্সনে এইসব কমিট আছে।

সমস্যার সমাধান

  • বিভিন্ন KSP সংক্রান্ত সমস্যার সমাধান করা হয়েছে।

ভার্সন 2.7.0-alpha01

১ মে, ২০২৪

androidx.room:room-*:2.7.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 2.7.0-alpha01-এ এইসব কমিট আছে।

নতুন ফিচার

  • Kotlin Multiplatform (KMP) সাপোর্ট: এই রিলিজে, Room-কে Kotlin Multiplatform (KMP) লাইব্রেরি হিসেবে রিফ্যাক্টর করা হয়েছে। যদিও এখনও কিছু কাজ বাকি আছে, এই রিলিজে Room-এর একটি নতুন ভার্সন নিয়ে আসা হয়েছে যেখানে বেশিরভাগ কার্যকারিতা "কমন-াইজ" (মাল্টিপ্ল্যাটফর্মের জন্য তৈরি) করা হয়েছে। বর্তমানে Android, iOS, JVM (ডেস্কটপ), নেটিভ Mac ও নেটিভ Linux প্ল্যাটফর্মে কাজ করে। নতুন কাজ করে এমন প্ল্যাটফর্মে কোনও ফাংশনালিটি না থাকলে, আসন্ন Room রিলিজের মাধ্যমে তা "ফিচার-কমপ্লিট" করা হবে।

Room KMP ব্যবহার শুরু করার বিষয়ে আরও জানতে, অফিসিয়াল Room KMP ডকুমেন্টেশন দেখুন।

  • KSP-এর মাধ্যমে প্রসেসিং করা হলে, ডিফল্ট হিসেবে KSP-তে Kotlin কোড জেনারেশন চালু করা হয়েছে। KAPT বা শুধুমাত্র Java প্রোজেক্টের জন্য, Room এখনও Java সোর্স তৈরি করবে।

API-তে পরিবর্তন

  • Room.databaseBuilder()-এর একটি ওভারলোড যোগ করা হয়েছে যা একটি ল্যাম্বডা প্যারামিটার নেয় যা জেনারেট করা RoomDatabase ইমপ্লিমেন্টেশন ইনস্ট্যান্টিয়েট করার সময় রিফ্লেকশন ব্যবহার করা এড়াতে রুম জেনারেটেড ফাংশনের সাথে ব্যবহার করার জন্য তৈরি করা হয়েছে। ব্যবহারের উদাহরণ হল:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • CoroutineContext সহ রুম কনফিগার করার জন্য একটি API বিল্ডারে যোগ করা হয়েছে: RoomDatabase.Builder.setQueryCoroutineContext। মনে রাখবেন, RoomDatabase শুধুমাত্র setQueryExecutor ব্যবহারকারী এক্সিকিউটর বা কোরাউটিন কনটেক্সটের সাথে কনফিগার করা যেতে পারে, তবে দুটির সাথে নয়।
  • SQLite ড্রাইভারের সাথে রুম কনফিগার করার জন্য একটি API যোগ করা হয়েছে: RoomDatabase.Builder.setDriver()। SQLite Driver API সম্পর্কে আরও তথ্য পেতে, SQLite KMP ডকুমেন্টেশন দেখুন
  • ড্রাইভার API থেকে অন্তর্নিহিত SQLiteConnection অ্যাক্সেস করার জন্য API যোগ করা হয়েছে: RoomDatabase.useReaderConnection এবং RoomDatabase.useWriterConnection।
  • Varios Room সম্পর্কিত কলব্যাক এখন ওভারলোড করা ভার্সনে আছে যা SupportSQLiteDatabase-এর পরিবর্তে SQLiteConnection গ্রহণ করে। KMP প্রোজেক্টে মাইগ্রেট করার সময় এগুলি ওভাররাইড করার কথা। Android অ্যাপে Room-এর ব্যবহার সাধারণ KMP মডিউলে মাইগ্রেট করার ব্যাপারে আরও তথ্য পেতে, মাইগ্রেশন গাইড দেখুন। কলব্যাক হল:
    • Migration.migrate(SQLiteConnection)
    • AutoMigrationSpec.onPostMigrate(SQLiteConnection)
    • RoomDatabase.Callback.onCreate(SQLiteConnection)
    • RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
    • RoomDatabase.Callback.onOpen(SQLiteConnection)
  • KTX আর্টিফ্যাক্ট androidx.room:room-ktx-কে androidx.room:room-runtime-এর সাথে এর সব API সহ মার্জ করা হয়েছে, আর্টিফ্যাক্ট এখন ফাঁকা। আপনার ডিপেন্ডেন্সি তালিকা থেকে এটি সরিয়ে দিন।

ভার্সন 2.6

ভার্সন 2.6.1

২৯ নভেম্বর, ২০২৩

androidx.room:room-*:2.6.1 রিলিজ করা হয়েছে। ভার্সন 2.6.1-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • জেনারেট করা কোডে একটি সমস্যার সমাধান করা হয়েছে যেখানে EntityCursorConverter-এ ডবল কলামের ডিফল্ট ভ্যালু 0.0-এর পরিবর্তে 0-তে সেট করা হচ্ছিল। এছাড়াও, Float ধরনের কলামের জন্য একই ধরনের এজ-কেসের সম্ভাব্য সমাধান অন্তর্ভুক্ত করা হয়েছে। (Id75f5, b/304584179)
  • PagingSource লোড থেকে প্রাপ্ত ব্যতিক্রমগুলি এখন Throwable সহ LoadResult.Error-এর LoadStateUpdate হিসেবে প্রচার করা হবে। এই সমস্যা সংক্রান্ত স্ট্যাটাস PagingDataAdapter.loadStateFlow(Views) বা LazyPagingItems.loadState(Compose)-এর মাধ্যমে দেখা যায়। মনে রাখবেন যে এটি আচরণগত পরিবর্তনকে চিহ্নিত করে যেখানে অতীতে লোড সংক্রান্ত সমস্যাগুলি dao পদ্ধতির মাধ্যমে একটি ব্যতিক্রম হিসেবে উঠে আসবে যা লোডকে ট্রিগার করে। (I93887, b/302708983)

ভার্সন 2.6.0

১৮ অক্টোবর, ২০২৩

androidx.room:room-*:2.6.0 রিলিজ করা হয়েছে। ভার্সন 2.6.0-এ এই কমিটগুলি রয়েছে।

2.5.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • Kotlin কোড জেনারেশন (বা “Kotlin CodeGen”) চালু করার বিকল্প এখন Room KSP-তে উপলভ্য। (4297ec0). Room-এ Kotlin CodeGen চালু করতে, KSP-এর জন্য আপনার প্রসেসর বিকল্পে room.generateKotlin বিকল্পের নাম যোগ করুন। KSP-এর জন্য প্রসেসর বিকল্প কীভাবে পাস করবেন সেই সম্পর্কে আরও জানতে, KSP ডকুমেন্টেশন দেখুন।

মনে রাখবেন: Kotlin CodeGen ব্যবহার করার সময়, এটি মনে রাখা গুরুত্বপূর্ণ যে অতিরিক্ত বিধিনিষেধ যোগ করা হয়েছে। Kotlin CodeGen-এ DAO গেটার বা DAO কোয়েরি হিসেবে অ্যাবস্ট্রাক্ট প্রপার্টি ব্যবহার করার অনুমতি নেই এবং এর পরিবর্তে প্রপার্টি ভ্যালু অপরিবর্তনীয় এবং এর একটি নির্দিষ্ট স্টোর করা ফলাফল আছে, এই ভুল ধারণা এড়াতে ফাংশন হিসেবে আবার লিখতে হবে। আরেকটি বিধিনিষেধ যোগ করা হয়েছে, তা হল Kotlin CodeGen-এর জন্য Room-এ আর নাল মান গ্রহণ করতে পারে এমন রিটার্ন টাইপ ব্যবহার করা যাবে না।

সতর্কতা: Kotlin CodeGen ব্যবহার করার সময় আপনি দেখতে পেতে পারেন যে আপনার প্রোজেক্টের ক্ষেত্রে নালিবিলিটি সংক্রান্ত নিয়ম আরও কঠোর। Kotlin CodeGen-এ, টাইপ আর্গুমেন্টের নালিবিলিটি গুরুত্বপূর্ণ, যেখানে Java-তে এটি বেশিরভাগ ক্ষেত্রেই উপেক্ষা করা হয়। যেমন, ধরা যাক আপনার `Flow<foo\>` রিটার্ন টাইপ আছে এবং টেবিলটি খালি। Java CodeGen-এ এর ফলে কোনও সমস্যা হবে না, তবে Kotlin CodeGen-এ আপনি একটি সমস্যার মেসেজ পাবেন। এটি এড়াতে, আপনাকে `Flow<foo?\>` ব্যবহার করতে হবে, ধরে নেওয়া হচ্ছে যে একটি নাল নির্গত হয়েছে। </foo?\></foo\>

  • Room Gradle প্লাগ-ইনের জন্য নতুন আর্টিফ্যাক্ট Room-এ androidx.room আইডির সাথে যোগ করা হয়েছে, যা Gradle অ্যানোটেশন প্রসেসর বিকল্পের মাধ্যমে স্কিমার ইনপুট ও আউটপুট থাকা সংক্রান্ত Room-এ আগে থেকে থাকা বিভিন্ন সমস্যার সমাধান করে। আরও বিবরণের জন্য, Room ভার্সন 2.6.0-alpha02 রিলিজ নোট দেখুন।
  • KSP-এর জন্য Room এন্টিটিতে ভ্যালু ক্লাস এখন কাজ করে। (4194095)
  • DAO ফাংশনে নেস্ট করা ম্যাপ রিটার্ন টাইপ এখন Room-এ কাজ করে। (I13f48, 203008711)

ভার্সন 2.6.0-rc01

২০ সেপ্টেম্বর, ২০২৩

androidx.room:room-*:2.6.0-rc01 রিলিজ করা হয়েছে। ভার্সন 2.6.0-rc01-এ এইসব কমিট রয়েছে।

ভার্সন 2.6.0-beta01

২৩ আগস্ট, ২০২৩

androidx.room:room-*:2.6.0-beta01 রিলিজ করা হয়েছে। ভার্সন 2.6.0-beta01-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • আপসার্ট চলাকালীন SQLite ব্যতিক্রমের বিশেষ কেস হ্যান্ডেল করা হয় যখন আপসার্ট চলাকালীন 2067 SQLITE_CONSTRAINT_UNIQUE ব্যতিক্রম থ্রো করা হয়, তখন আপসার্টকে আপডেট পারফর্ম করতে হবে। (If2849, b/243039555)

Version 2.6.0-alpha03

৯ আগস্ট, ২০২৩

androidx.room:room-*:2.6.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 2.6.0-alpha03-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • DAO ফাংশনে নেস্ট করা ম্যাপ রিটার্ন টাইপ এখন Room-এ কাজ করে। (I13f48, 203008711)

API সংক্রান্ত পরিবর্তন

  • @MapInfo-এর পরিবর্তে @MapColumn নামের নতুন ধরনের অ্যানোটেশন তৈরি করা হয়েছে, যা এখন বন্ধ করে দেওয়া হয়েছে। @MapInfo অ্যানোটেশনে দেওয়া প্রতিটি কলাম নামের (keyColumnName, valueColumnName বা দু'টিই) জন্য, আপনাকে শুধুমাত্র columnName সহ একটি @MapColumn অ্যানোটেশন ঘোষণা করতে হবে এবং DAO ফাংশনের রিটার্ন টাইপে উল্লেখ করা নির্দিষ্ট ধরনের আর্গুমেন্টে (Map-এর কী বা ভ্যালু) অ্যানোটেশন ব্যবহার করতে হবে। এর কারণ হল, @MapColumn অ্যানোটেশনটি @MapInfo-এর মতো ফাংশনের পরিবর্তে DAO ফাংশনের রিটার্ন টাইপের মধ্যে সরাসরি টাইপ আর্গুমেন্টে ব্যবহার করা হয়। আরও তথ্যের জন্য, @MapColumn ডকুমেন্টেশন দেখুন। (Ib0305, b/203008711)
  • মানানসই হওয়া সংক্রান্ত সমস্যা লুকানোর জন্য আপডেট করা API ফাইল (I8e87a, b/287516207)
  • Room Gradle প্লাগ-ইন API আপডেট করা হয়েছে যাতে প্রতি-ভেরিয়েন্ট কনফিগারেশনের প্রয়োজন না হয়। এর অর্থ হল, একাধিক ডিরেক্টরি তৈরি না করেই প্লাগ-ইনটি সমস্ত ভেরিয়েন্টের জন্য গ্লোবাল লোকেশন গ্রহণ করতে পারে, এর ফলে আরও মসৃণ মাইগ্রেশন সম্ভব হয়। একই সাথে, প্লাগ-ইনের সুবিধা (পুনরায় তৈরি করা ও ক্যাশে করা যায় এমন বিল্ড) বজায় রেখেও, এটি ফ্লেভার বা বিল্ড টাইপ স্কিমা ম্যানুয়ালি কনফিগার করার জন্য যথেষ্ট নমনীয়। (I09d6f, b/278266663)

সমস্যার সমাধান

  • QueryInterceptorStatement-এ সম্ভাব্য মেমরি লিক সংক্রান্ত দুর্বলতা সমাধান করা হয়েছে। (I193d1)
  • QueryInterceptorDatabase execSQL() ফাংশনে ভুল আচরণ ঠিক করা হয়েছে। (Iefdc8)

ভার্সন 2.6.0-alpha02

২১ জুন, ২০২৩

androidx.room:room-*:2.6.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 2.6.0-alpha02-এ এইসব কমিট আছে।

Room Gradle প্লাগ-ইন

এই নতুন রিলিজে androidx.room আইডি সহ Room Gradle প্লাগ-ইনের জন্য একটি নতুন আর্টিফ্যাক্ট রয়েছে, যা Gradle অ্যানোটেশন প্রসেসর বিকল্পের মাধ্যমে স্কিমার ইনপুট এবং আউটপুট থাকা সংক্রান্ত Room-এ বিভিন্ন বিদ্যমান সমস্যার সমাধান করে। Room Gradle Plugin, প্রজেক্টকে এমনভাবে কনফিগার করে যাতে অটো-মাইগ্রেশনের জন্য ব্যবহৃত এবং কম্পাইল টাস্কের আউটপুট হিসেবে তৈরি স্কিমা সঠিকভাবে কনফিগার করা হয়। এর ফলে, রিপ্রোডিউস করা যায় এবং ক্যাশে করা যায় এমন বিল্ড তৈরি করা সম্ভব হয়। বেস স্কিমা লোকেশন কনফিগার করার জন্য প্লাগ-ইন একটি DSL অফার করে:

room {
    schemaDirectory("$projectDir/schemas/")
}

তারপরে, প্লাগ-ইনটি ফ্লেভার করা ফোল্ডারে স্কিমা ফাইল আউটপুট করার জন্য Room কম্পাইলার এবং বিভিন্ন কম্পাইল টাস্ক ও এর ব্যাকএন্ড (javac, KAPT, KSP) কনফিগার করবে, অর্থাৎ schemas/flavorOneDebug/com.package.MyDatabase/1.json। সাধারণত, এই ফাইলগুলি যাচাইকরণ এবং অটো-মাইগ্রেশনের জন্য ব্যবহার করার জন্য রিপোজিটরিতে চেক-ইন করা হয়। অ্যানোটেশন প্রসেসর বিকল্পের পরিবর্তে প্লাগ-ইন ব্যবহার করার জন্য মাইগ্রেট করার সময়, আগে থেকে থাকা স্কিমা ফাইলগুলি প্লাগ-ইন দ্বারা তৈরি জেনারেটেড ফ্লেভার ডিরেক্টরিতে কপি করতে হবে, এটি একটি এককালীন মাইগ্রেশন অপারেশন যা ম্যানুয়ালি করতে হবে। developers.android.com-এ স্কিমা ডকুমেন্টেশন ভবিষ্যতে আপডেট করা হবে, যখন মতামত বিবেচনা করা হবে এবং প্লাগ-ইন স্থিতিশীল হবে, তাই এটি ব্যবহার করে দেখুন।

API সংক্রান্ত পরিবর্তন

  • RoomDatabase.QueryCallback-কে SAM কনভার্সন ব্যবহার করার অনুমতি দেওয়ার জন্য একটি কার্যকরী ইন্টারফেস হিসেবে সংজ্ঞায়িত করা হয়েছে। (Iab8ea, b/281008549)

সমস্যার সমাধান

  • Java থেকে Kotlin-এ Room সোর্স মাইগ্রেশনের পরে Robolectric-এ ডেটাবেস ইনস্ট্যানশিয়েট করার সময় হওয়া সমস্যার সমাধান করা। (Ic053c, b/274924903)

ভার্সন 2.6.0-alpha01

২২ মার্চ, ২০২৩

androidx.room:room-*:2.6.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 2.6.0-alpha01-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • KSP-এর জন্য Room-এ ভ্যালু ক্লাস সাপোর্ট করা। Room এখন এন্টিটিতে ভ্যালু ক্লাস সাপোর্ট করতে পারে। (4194095)
  • Room-এ(4297ec0) এখন Kotlin কোড জেনারেশন (বা “Kotlin CodeGen”) চালু করা যাবে। Room-এ Kotlin CodeGen চালু করতে, KSP-এর জন্য আপনার প্রসেসর বিকল্পে room.generateKotlin বিকল্পের নাম যোগ করুন। KSP-এর জন্য প্রসেসর বিকল্প কীভাবে পাস করবেন সেই সম্পর্কে আরও জানতে, KSP ডকুমেন্টেশন দেখুন।

মনে রাখবেন: Kotlin CodeGen ব্যবহার করার সময়, এটি মনে রাখা গুরুত্বপূর্ণ যে অতিরিক্ত বিধিনিষেধ যোগ করা হয়েছে। Kotlin CodeGen-এ DAO গেটার বা DAO কোয়েরি হিসেবে অ্যাবস্ট্রাক্ট প্রপার্টি ব্যবহার করা যায় না এবং এর পরিবর্তে, প্রপার্টির ভ্যালু যে অপরিবর্তনীয় এবং সেটির স্টোর করা ফলাফল যে নির্দিষ্ট, সেই ভুল ধারণা এড়াতে সেগুলিকে ফাংশন হিসেবে আবার লেখা হয়। আরেকটি বিধিনিষেধ যোগ করা হয়েছে, তা হল Kotlin CodeGen-এর জন্য Room-এ আর নালযোগ্য সংগ্রহ রিটার্ন প্রকার ব্যবহার করা যাবে না।

সতর্কতা: Kotlin CodeGen ব্যবহার করার সময় আপনি দেখতে পেতে পারেন যে আপনার প্রোজেক্টের ক্ষেত্রে নালিবিলিটি সংক্রান্ত নিয়ম আরও কঠোর। Kotlin CodeGen-এ, টাইপ আর্গুমেন্টের নালেবিলিটি গুরুত্বপূর্ণ, যেখানে Java-তে এটি বেশিরভাগ ক্ষেত্রে উপেক্ষা করা হয়। যেমন, ধরা যাক আপনার কাছে `Flow<foo\>` রিটার্ন টাইপ আছে এবং টেবিলটি খালি। Java CodeGen-এ, এটি কোনও সমস্যা সৃষ্টি করবে না, তবে Kotlin CodeGen-এ, আপনি একটি সমস্যা দেখতে পাবেন। এটি এড়াতে, আপনাকে `Flow<foo?\>` ব্যবহার করতে হবে, ধরে নেওয়া হচ্ছে যে একটি নাল নির্গত হয়েছে। </foo?\></foo\>

API-তে পরিবর্তন

  • DAO পদ্ধতির রিটার্ন টাইপে নাল মান গ্রহণ করতে পারে এমন কালেকশনের অর্থহীন ব্যবহার থেকে রক্ষা করা। (I777dc, b/253271782, b/259426907)
  • ইনভ্যালিডেশন ট্র্যাকার পরিবর্তন ইমিট করে এমন ফ্লো তৈরি করার জন্য একটি API যোগ করুন। ডেটাবেসে হওয়া পরিবর্তনের সাথে সাথে প্রতিক্রিয়া জানাতে পারে এমন স্ট্রিম তৈরি করার জন্য API উপযোগী। (I8c790, b/252899305)

সমস্যার সমাধান

  • Kotlin কোড জেনারেটরে DAO গেটার বা DAO কোয়েরি হিসেবে অ্যাবস্ট্রাক্ট প্রপার্টি ব্যবহার করা যাবে না, পরিবর্তে সেগুলিকে ফাংশন হিসেবে আবার লিখতে হবে যাতে প্রপার্টির ভ্যালু অপরিবর্তনীয় এবং সেটির স্টোর করা ফলাফল ফিক্সড, এই ভুল ধারণা এড়ানো যায়। (If6a13, b/127483380, b/257967987)

ভার্সন 2.5.2

ভার্সন 2.5.2

২১ জুন, ২০২৩

androidx.room:room-*:2.5.2 রিলিজ করা হয়েছে। ভার্সন 2.5.2-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • kotlinx-metadata-jvm-এর সাথে কাজ না করার সমস্যা সমাধান করা হয়েছে। (386d5c)
  • Robolectric টেস্টে ব্যবহার করার সময় Room-এ সমস্যা হওয়ার কারণ সম্পর্কিত সমস্যার সমাধান করা হয়েছে। (f79bea, b/274924903)

ভার্সন 2.5.1

ভার্সন 2.5.1

২২ মার্চ, ২০২৩

androidx.room:room-*:2.5.1 রিলিজ করা হয়েছে। ভার্সন 2.5.1-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • ডেটাবেস আগে থেকেই খোলা থাকলে, FrameworkSQLiteHelper-এ ডেটাবেস পেরেন্ট ডিরেক্টরি চেক করা এড়িয়ে চলুন। (5de86b8)
  • ডেটাবেস আগে থেকেই খোলা আছে কিনা তা চেক করার সময় isOpenInternal চেক ব্যবহার করুন। (e91fb35)
  • Room-এর acquireTransactionThread()-এ রি-এন্ট্রান্ট কেস আরও ভালোভাবে হ্যান্ডেল করার সুবিধা এখন উপলভ্য। (219f98b). সাসপেন্ডিং ট্রানজ্যাকশনের সময়, Room ট্রানজ্যাকশন এক্সিকিউটর থেকে একটি থ্রেড ব্যবহার করে, এতে একটি ইভেন্ট লুপ শুরু করে এবং এতে সাসপেন্ডিং ডেটাবেস অপারেশন ডিসপ্যাচ করে যাতে সেগুলি সব ট্রানজ্যাকশন কোরুটিনের মধ্যে এনক্যাপসুলেট করা থাকে। সাধারণত আশা করা হয় যে ট্রানজ্যাকশন থ্রেডটি ট্রানজ্যাকশন শুরু করার থ্রেড থেকে আলাদা হবে, তবে কিছু ক্ষেত্রে সেগুলি একই হয়। এই ধরনের রি-এন্ট্র্যান্ট কেস ম্যানেজ করার জন্য withTransaction()-কে রিফ্যাক্টর করা হয়েছে যাতে এটি আর কন্ট্রোল জবের উপর নির্ভর না করে এবং এর পরিবর্তে এটি ট্রানজ্যাকশন থ্রেডে runBlocking-এর মধ্যে থেকে সাসপেন্ড করা ট্রানজ্যাকশন ব্লক এক্সিকিউট করবে।

ভার্সন 2.5.0

ভার্সন 2.5.0

২২ ফেব্রুয়ারি, ২০২৩

androidx.room:room-paging-guava:2.5.0, androidx.room:room-paging-rxjava2:2.5.0 ও androidx.room:room-paging-rxjava3:2.5.0 রিলিজ করা হয়েছে। ভার্সন 2.5.0-এ এই কমিটগুলি রয়েছে।

ভার্সন 2.5.0

১১ জানুয়ারি, ২০২৩

androidx.room:room-*:2.5.0 রিলিজ করা হয়েছে। ভার্সন 2.5.0-এ এইসব কমিট আছে।

2.4.0 ভার্সনের পর থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন

  • room-runtime সোর্সের সবকটি Java থেকে Kotlin-এ কনভার্ট করা হয়েছে। মনে রাখবেন, আপনার কোড Kotlin-এ থাকলে, লাইব্রেরি Kotlin-এ কনভার্ট করার কারণে সোর্স ইনকম্প্যাটিবিলিটি সংক্রান্ত সমস্যার সম্মুখীন হতে পারেন। যেমন, InvalidationTracker-এ একটি পরিচিত সোর্স ইনকম্প্যাটিবল পরিবর্তন হল, Observer-এ onInvalidate() ঘোষণা করতে হবে যাতে Set টাইপের প্যারামিটার থাকে, MutableSet নয়। এছাড়াও, নির্দিষ্ট কিছু গেটার পদ্ধতিকে প্রপার্টিতে কনভার্ট করা হয়েছে যার জন্য Kotlin ফাইলে প্রপার্টি অ্যাক্সেস সিনট্যাক্স প্রয়োজন। কোনও উল্লেখযোগ্য অসঙ্গতি থাকলে, সমস্যা সম্পর্কে অভিযোগ জানান।
  • নতুন শর্টকাট অ্যানোটেশন, @Upsert যোগ করা হয়েছে, যা কোনও অনন্যতা সংক্রান্ত বিবাদ না থাকলে এন্টিটি যোগ করার চেষ্টা করে অথবা কোনও বিবাদ থাকলে এন্টিটি আপডেট করে। (I7aaab, b/241964353)
  • রুম পেজিংয়ে সহায়তা করার জন্য নতুন রুম-পেজিং আর্টিফ্যাক্ট room-paging-rxjava2, room-paging-rxjava3 এবং room-paging-guava যোগ করা হয়েছে।
  • @MapInfo-এ (Icc4b5) দ্ব্যর্থতা নিরসনের জন্য কী ও ভ্যালু টেবিলের নাম প্রদান করতে API যোগ করা হয়েছে

Version 2.5.0-rc01

৭ ডিসেম্বর, ২০২২

androidx.room:room-*:2.5.0-rc01 রিলিজ করা হয়েছে। ভার্সন 2.5.0-rc01-এ এইসব কমিট রয়েছে।

  • এই রিলিজটি 2.5.0-beta02-এর মতো।

ভার্সন 2.5.0-beta02

৯ নভেম্বর, ২০২২

androidx.room:room-*:2.5.0-beta02 রিলিজ করা হয়েছে। ভার্সন 2.5.0-beta02-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • Java-এর অ্যারে আচরণের সাথে ম্যাচ করাতে, ইনভেরিয়েন্ট (Array<Any?>) থেকে কন্ট্রাভেরিয়েন্ট (Array<out Any?>) পর্যন্ত কোয়েরি আর্গুমেন্ট নেয় এমন বিভিন্ন API সংক্রান্ত সমস্যার সমাধান করুন। (b/253531073)

Version 2.5.0-beta01

৫ অক্টোবর, ২০২২

androidx.room:room-*:2.5.0-beta01 রিলিজ করা হয়েছে। ভার্সন 2.5.0-beta01-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • @Upsert-এর সাথে কাজ করে এমন ন্যূনতম ভার্সন API 16-এ সীমাবদ্ধ করুন। পুরনো API-তে প্রাথমিক কী কনস্ট্রেইন্ট সংক্রান্ত সমস্যা শনাক্ত করতে না পারার কারণে এটি হয়। (I5f67f, b/243039555)

সমস্যার সমাধান

  • ছায়া টেবিল ভুলভাবে স্কিমা .json ফাইলে এক্সপোর্ট করা এবং সেগুলিকে দূষিত করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I4f83b, b/246751839)

ভার্সন 2.5.0-alpha03

২৪ আগস্ট, ২০২২

androidx.room:room-*:2.5.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 2.5.0-alpha03-এ এইসব কমিট আছে।

নতুন ফিচার

  • নতুন শর্টকাট অ্যানোটেশন, @Upsert যোগ করা হয়েছে, যা কোনও অনন্যতা সংক্রান্ত বিবাদ না থাকলে এন্টিটি যোগ করার চেষ্টা করে অথবা কোনও বিবাদ থাকলে এন্টিটি আপডেট করে। (I7aaab, b/241964353)

সমস্যার সমাধান

  • অটো-মাইগ্রেশন ফরেন কী কনস্ট্রেন্ট চেকের সময় Room এখন IllegalStateException-এর পরিবর্তে SQLiteConstraintException দেখাবে। (I328dd)
  • getOpenHelper, getQueryExecutor ও getTransactionExecutor-এর গেটার / প্রপার্টির জন্য Kotlin সোর্সে মানানসই নয় এমন পরিবর্তন সংক্রান্ত সমস্যার সমাধান করুন। (Iad0ac)

Version 2.5.0-alpha02

১ জুন, ২০২২

androidx.room:room-*:2.5.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 2.5.0-alpha02-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • রুম পেজিংয়ে সহায়তা করার জন্য নতুন room-paging আর্টিফ্যাক্ট room-paging-rxjava2, room-paging-rxjava3 এবং room-paging-guava যোগ করা হয়েছে।(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203666906)

API-তে পরিবর্তন

  • room-runtime-এর সবকটি Java থেকে Kotlin-এ কনভার্ট করা হয়েছে। (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/206859668)

    মনে রাখবেন: লাইব্রেরি Kotlin-এ কনভার্ট করার কারণে সোর্স ইনকম্প্যাটিবিলিটি সংক্রান্ত সমস্যার সম্মুখীন হতে পারেন। আপনার কোড Kotlin-এ লেখা হলে এবং Room-এর পুরনো ভার্সন কল করলে, নতুন ভার্সনকে এইসব কেস ম্যানেজ করতে হবে। যেমন, InvalidationTracker-এ একটি পরিচিত সোর্স ইনকম্প্যাটিবল পরিবর্তন হল, Observer-এ onInvalidate() ঘোষণা করতে হবে যাতে Set টাইপের প্যারামিটার থাকে, MutableSet নয়।

  • @MapInfo-এ দ্ব্যর্থতা নিরসনের জন্য কী এবং ভ্যালু টেবিলের নাম প্রদান করার জন্য API যোগ করা হয়েছে (Icc4b5)
  • প্রপার্টি গেটারে @Ignore আবার অনুমতি দিতে সোর্স কম্প্যাটিবিলিটি সংক্রান্ত সমস্যার সমাধান করুন। (Ifc2fb)

সমস্যার সমাধান

  • ডুপ্লিকেট কলাম সংক্রান্ত সমস্যার সমাধান করার হিউরিস্টিক অ্যালগরিদম। Room এখন মাল্টিম্যাপ কোয়েরিতে অস্পষ্ট কলামের সমাধান করার চেষ্টা করবে। এটি একই নামের টেবিল সহ টেবিলের সাথে JOIN করার অনুমতি দেয় যাতে একটি ফলাফল ডেটা অবজেক্টে সঠিকভাবে ম্যাপ করা যায়। (I4b444, b/201306012, b/212279118)

ভার্সন 2.5.0-alpha01

২৩ ফেব্রুয়ারি, ২০২২

androidx.room:room-*:2.5.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 2.5.0-alpha01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Kotlin সোর্সে Room @IntDef ব্যবহার এনফোর্স করা না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I75f41, b/217951311)
  • প্রপার্টি গেটারদের মধ্যে @Query আবার ব্যবহার করার অনুমতি দিতে সোর্স মানানসই হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I0a09b)
  • Java থেকে Kotlin-এ কনভার্ট করা সাধারণ রুম। (I69c48, b/206858235)

    মনে রাখবেন: লাইব্রেরি কোটলিনে কনভার্ট করার সময় কিছু প্রপার্টি কম্প্যানিয়ন অবজেক্টে সরানো হয়েছে বলে সোর্স ইনকম্প্যাটিবিলিটি সংক্রান্ত সমস্যার সম্মুখীন হতে পারেন। আপনার কোড Kotlin-এ লেখা হলে এবং Room-এর পুরনো ভার্সন কল করলে, এইসব প্রপার্টি অ্যাক্সেস করার সময় নতুন ভার্সনে ".Companion" সাফিক্স যোগ করতে হবে।

  • Java থেকে Kotlin-এ room-migration কনভার্ট করা হয়েছে। (I2724b, b/206858622)
  • room-runtime-এ pagingটি সম্পর্কিত ফাইল Java থেকে Kotlin-এ কনভার্ট করা হয়েছে। (I82fc8, b/206859668)
  • মাল্টি-প্রসেস লক ও FrameworkSQLite* লেভেলে ব্যবহারের জন্য API যোগ করা হয়েছে, যাতে মাল্টি-প্রসেস প্রথমবার ডেটাবেস তৈরি ও মাইগ্রেশন সুরক্ষিত রাখা যায়। (Ied267, b/193182592)

সমস্যার সমাধান

  • Kotlin সোর্সে ইন্টার্নাল প্রপার্টির জন্য সহায়তা যোগ করা হয়েছে। এটি Room-এর আচরণে সামান্য পরিবর্তন যেখানে এটি ফাংশনের সোর্স নাম ব্যবহার করবে যখন সেগুলিকে গেটার/সেটার হিসাবে প্রপার্টির সাথে ম্যাচ করবে (আগে, এটি ফাংশনের JVM নাম ব্যবহার করছিল যা ইন্টার্নাল ফাংশন/প্রপার্টির জন্য আলাদা)। আপনি যদি প্রাইভেট প্রপার্টির সাথে গেটার/সেটার ম্যাচ করানোর জন্য কাস্টম @JvmName অ্যানোটেশন ব্যবহার করে থাকেন, তাহলে আপডেট করার পরে জেনারেট করা কোডটি ডবল-চেক করুন (If6531, b/205289020)

ভার্সন 2.4.3

ভার্সন 2.4.3

২৭ জুলাই, ২০২২

androidx.room:room-*:2.4.3 রিলিজ করা হয়েছে। ভার্সন 2.4.3-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Kotlin 1.7-এ (b/236612358) Room-এর সাসপেন্ড ফাংশন শনাক্ত করতে না পারার সমস্যার সমাধান করা হয়েছে

ভার্সন 2.4.2

ভার্সন ২.৪.২

২৩ ফেব্রুয়ারি, ২০২২

androidx.room:room-*:2.4.2 রিলিজ করা হয়েছে। ভার্সন 2.4.2-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • @Transaction সাসপেন্ড ফাংশনের জন্য কোড জেনারেট করার সময় হওয়া সমস্যা সমাধান করুন। এই ফাংশনের বডি -Xjvm-default=all বা সমতুল্য কম্পাইলেশনের কারণে ডিফল্ট ইন্টারফেস পদ্ধতি জেনারেট করে। (Ia4ce5)
  • Array<ByteArray> রিটার্ন টাইপ কোয়েরি পদ্ধতির জন্য Room কোড জেনারেট করে, এমন একটি সমস্যার সমাধান করা। (If086e, b/213789489)

ভার্সন ২.৪.১

ভার্সন ২.৪.১

১২ জানুয়ারি, ২০২২

androidx.room:room-*:2.4.1 রিলিজ করা হয়েছে। ভার্সন 2.4.1-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Kotlin সোর্সে ইন্টার্নাল প্রপার্টির জন্য সহায়তা যোগ করা হয়েছে। এটি Room-এর আচরণে সামান্য পরিবর্তন যেখানে এটি ফাংশনের সোর্স নাম ব্যবহার করবে যখন সেগুলিকে গেটার/সেটার হিসাবে প্রপার্টির সাথে ম্যাচ করবে (আগে, এটি ফাংশনের JVM নাম ব্যবহার করছিল যা ইন্টার্নাল ফাংশন/প্রপার্টির জন্য আলাদা)। আপনি যদি প্রাইভেট প্রপার্টির সাথে গেটার/সেটার ম্যাচ করানোর জন্য কাস্টম @JvmName অ্যানোটেশন ব্যবহার করে থাকেন, তাহলে আপডেট করার পরে জেনারেট করা কোডটি ডবল-চেক করুন (If6531, b/205289020)

ভার্সন 2.4.0

ভার্সন 2.4.0

১৫ ডিসেম্বর, ২০২১

androidx.room:room-*:2.4.0 রিলিজ করা হয়েছে। ভার্সন 2.4.0-এ এইসব কমিট রয়েছে।

2.3.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • অটোমেটিক মাইগ্রেশন: স্কিমা এক্সপোর্ট করা থাকলে, রুম এখন অটোমেটিক মাইগ্রেশন জেনারেট করার জন্য API অফার করে। Room-কে জানাতে যে এটি একটি অটোমেটিক মাইগ্রেশন তৈরি করবে, @Database#autoMigrations ব্যবহার করে কোন ভার্সন থেকে কোন ভার্সনে অটোমেটিক মাইগ্রেট করা হবে তা ঘোষণা করা যেতে পারে। টেবিল ও কলামের নাম পরিবর্তন বা মুছে ফেলা সংক্রান্ত অতিরিক্ত তথ্য Room-এর প্রয়োজন হলে, @AutoMigration অ্যানোটেশন এমন ইনপুট সহ স্পেসিফিকেশন ক্লাস ঘোষণা করতে পারে। আরও তথ্যের জন্য @AutoMigration ডকুমেন্টেশন দেখুন।
  • অটোমেটিক মাইগ্রেশনে ডিপেন্ডেন্সি ইনজেকশন: @ProvidedAutoMigrationSpec হল একটি নতুন API যা ঘোষণা করে যে RoomDatabase.Builder#addAutoMigrationSpec()-এর মাধ্যমে রানটাইমে একটি AutoMigrationSpec প্রদান করা হবে। এর ফলে, ডিপেন্ডেন্সি ইনজেকশন ফ্রেমওয়ার্কের পক্ষে জটিল ডিপেন্ডেন্সির প্রয়োজন হলে এই ধরনের স্পেসিফিকেশন প্রদান করা সম্ভব হয়।
  • অটোমেটিক মাইগ্রেশনের জন্য মাইগ্রেশন টেস্ট হেল্পার সাপোর্ট: Room-এর MigrationTestHelper আপডেট করা হয়েছে যাতে নতুন কনস্ট্রাক্টর API প্রদান করে অটোমেটিক মাইগ্রেশন সাপোর্ট করা যায়, যা টেস্টের অধীনে ডেটাবেস ক্লাস গ্রহণ করে। এটি সহায়ককে runMigrationsAndValidate-এর সময় একই উপায়ে অটোমেটিক মাইগ্রেশন যোগ করার অনুমতি দেয়।
  • রুম-পেজিং সাপোর্ট: androidx.room:room-paging রিলিজ করা হয়েছে, যা androidx.paging.PagingSource রিটার্ন করা রুম কোয়েরির জন্য নেটিভ পেজিং ৩.০ সাপোর্ট প্রদান করে।
  • রিলেশনাল কোয়েরি পদ্ধতি: Room এখন মাল্টিম্যাপ রিটার্ন টাইপ @Dao পদ্ধতি সাপোর্ট করে, যা JOIN স্টেটমেন্টের জন্য উপযোগী। মাল্টিম্যাপের যেসব ধরন কাজ করে সেগুলি হল Map, SparseArray, LongSparseArray, এর সাথে Guava-এর ImmutableMap, ImmutableSetMultimap এবং ImmutableListMultimap।

Version 2.4.0-rc01

১ ডিসেম্বর, ২০২১

androidx.room:room-*:2.4.0-rc01 রিলিজ করা হয়েছে। ভার্সন 2.4.0-rc01-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • Kotlin 1.6-এ কাজ করার জন্য KSP-তে Room-এর নির্ভরতা 1.6.0-1.0.1-এ আপডেট করুন

ভার্সন 2.4.0-beta02

১৭ নভেম্বর, ২০২১

androidx.room:room-*:2.4.0-beta02 রিলিজ করা হয়েছে। ভার্সন 2.4.0-beta02-এ এইসব কমিট আছে।

নতুন ফিচার

  • আমরা @MapInfo-তে SparseArray ও LongSparseArray-এর জন্য সহায়তা যোগ করেছি। (Ic91a2b/138910317)

সমস্যার সমাধান

  • আমরা একটি নতুন TypeConverter অ্যানালাইজার যোগ করেছি যা প্রকারের মধ্যে নাল হওয়ার সম্ভাবনা সম্পর্কিত তথ্যকে বিবেচনা করে। এই তথ্য শুধুমাত্র KSP-তে উপলভ্য হওয়ায়, এটি শুধুমাত্র KSP-তে ডিফল্ট হিসেবে চালু করা হয়। এর ফলে কোনও সমস্যা হলে, অ্যানোটেশন প্রসেসরে room.useNullAwareTypeAnalysis=false পাস করে আপনি এটি বন্ধ করতে পারবেন। এটি ঘটলে, একটি ত্রুটি ফাইল করুন কারণ এই ফ্ল্যাগটি ভবিষ্যতে সরিয়ে দেওয়া হবে। এই নতুন TypeConverter অ্যানালাইজারের সাথে, শুধুমাত্র নন-নাল রিসিভিং TypeConverters প্রদান করার সাজেশন দেওয়া হয় কারণ নতুন অ্যানালাইজারের কাছে নাল চেকের সাথে সেগুলিকে র‍্যাপ করার ক্ষমতা আছে। মনে রাখবেন, KAPT বা Java-কে অ্যানোটেশন প্রসেসর (KSP-এর মতো নয়) হিসেবে ব্যবহারকারী ব্যবহারকারীদের ক্ষেত্রে এর কোনও প্রভাব পড়ে না, টাইপে নালিবিলিটি সংক্রান্ত তথ্য থাকে না। (Ia88f9, b/193437407)
  • ICU টোকেনাইজার ব্যবহার করার জন্য ঘোষণা করা FTS এন্টিটি থাকলে, Room SQL সংক্রান্ত সমস্যার কারণে কম্পাইল করতে না পারার সমস্যা সমাধান করা হয়েছে। (I00db9, b/201753224)
  • ভার্সনের মধ্যে এম্বেড করা এন্টিটিতে নতুন কলাম যোগ করা সংক্রান্ত অটোমেটিক মাইগ্রেশনে হওয়া সমস্যার সমাধান করা হয়েছে। (I5fcb1b/193798291)
  • LEFT JOIN কোয়েরিতে রিলেশনাল কোয়েরি মেথড রিটার্ন টাইপ সংক্রান্ত একটি সমস্যার সমাধান করা হয়েছে। এইসব পরিবর্তনের ফলে, যেখানে ১-এ-একাধিক ম্যাপিং আছে, সেখানে কোনও কী-এর জন্য রিটার্ন করা কালেকশনে কার্সরে না পাওয়া গেলে, ভুল ভ্যালু অবজেক্ট অন্তর্ভুক্ত করা হবে না। কোনও উপযুক্ত মান খুঁজে না পাওয়া গেলে, একটি কী খালি সংগ্রহের সাথে ম্যাপ করা হবে। (Id5552b/201946438)
  • অটোমেটিক মাইগ্রেশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে কলামের নামে SQLite কীওয়ার্ড এড়িয়ে যাওয়া যায়নি। (Idbed4b/197133152)

ভার্সন 2.4.0-beta01

১৩ অক্টোবর, ২০২১

androidx.room:room-*:2.4.0-beta01 রিলিজ করা হয়েছে। ভার্সন 2.4.0-beta01-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • একই অটো-মাইগ্রেশনে অন্য টেবিলে একই নামের নতুন কলাম থাকলে, অটো-মাইগ্রেশন নতুন কলাম যোগ করতে না পারার সমস্যা সমাধান করা হয়েছে। (Ia5db5, b/200818663)
  • room-paging-এর মাধ্যমে তৈরি করা PagingSource ইমপ্লিমেন্টেশন এখন RoomDatabase.Builder-এর মাধ্যমে পাস করা queryExecutor ব্যবহার করে, তাই এটি ওভাররাইড করা যেতে পারে, আগে Dispatchers.IO-এর পরিবর্তে। (Iae259)

ভার্সন 2.4.0-alpha05

২৯ সেপ্টেম্বর, ২০২১

androidx.room:room-*:2.4.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 2.4.0-alpha05-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • UUID-এর জন্য বিল্ট-ইন টাইপ কনভার্টার যোগ করা হয়েছে। (I671e8, b/73132006)

API-তে পরিবর্তন

  • TypeConverters অ্যানোটেশনে একটি নতুন প্রপার্টি যোগ করা হয়েছে যাতে ডেভেলপাররা বিল্ট-ইন Enum এবং UUID কনভার্টার বন্ধ করতে পারেন। ডিফল্ট হিসেবে, এইসব কনভার্টার চালু থাকে তবে আপনি নির্দিষ্ট কোনও স্কোপ বা সম্পূর্ণ ডেটাবেসের জন্য সেগুলি বন্ধ করতে পারবেন। বিবরণের জন্য TypeConverters ডকুমেন্টেশন দেখুন। (36ae9e, b/195413406)

  • @MapInfo অ্যানোটেশনের মাধ্যমে DAO-তে মাল্টিম্যাপ রিটার্ন টাইপের জন্য নন-POJO কী/ভ্যালু সাপোর্ট করা। (I4d704)

ম্যাপের কী বা ভ্যালু কলাম একটি কলাম থেকে নেওয়া হলে @MapInfo প্রয়োজন হবে। উদাহরণ দেখুন:

@MapInfo(valueColumn = "songCount")
@Query("""
       SELECT *, COUNT(mSongId) as songCount
       FROM Artist JOIN Song ON Artist.artistName = Song.artist
       GROUP BY artistName
       """)
fun getArtistAndSongCounts(): Map<Artist, Integer>
  • Room-এর সাথে Paging3 ব্যবহার করার সময় room-paging-কে একটি প্রয়োজনীয় আর্টিফ্যাক্ট হিসেবে তৈরি করুন। (Ieaffe)

সমস্যার সমাধান

  • মাল্টিম্যাপ কোয়েরিতে ম্যাপের কী থেকে কলামের ORDER BY ক্লজ থাকলে, মাল্টিম্যাপ কোয়েরির ফলাফল সঠিকভাবে অর্ডার করা না হওয়ার সমস্যা সমাধান করা হয়েছে। (I6b887)

এক্সটার্নাল কন্ট্রিবিউশন

  • @Index-এ ইন্ডেক্স অর্ডার নির্দিষ্ট করার জন্য নতুন API যোগ করা হয়েছে। Nikita Zhelonkin-কে ধন্যবাদ। (I033fc)

ভার্সন 2.4.0-alpha04

২১ জুলাই, ২০২১

androidx.room:room-*:2.4.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 2.4.0-alpha04-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • রুম এখন মাল্টিম্যাপ রিটার্ন টাইপ @Dao পদ্ধতি সমর্থন করে, যা JOIN স্টেটমেন্টের জন্য উপযোগী। মাল্টিম্যাপের যেসব ধরন কাজ করে সেগুলি হল Map, সাথে Guava-এর ImmutableMap, ImmutableSetMultimap ও ImmutableListMultimap।

    মাল্টিম্যাপ কোয়েরির উদাহরণ নিচে দেওয়া হল:

    এক-এক সম্পর্কযুক্ত ম্যাপ

    @Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId")
    fun getSongAndArtist(): Map<Song, Artist>
    

    এক থেকে একাধিক রিলেশন ম্যাপ (স্ট্যান্ডার্ড মাল্টিম্যাপ)

    @Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId")
    fun getArtistAndAlbums(): Map<Artist, List<Album>>
    

    মাল্টিম্যাপ ফলাফলকে কাজ করে এমন অ্যাসিঙ্ক রিটার্ন টাইপেও র‍্যাপ করা যেতে পারে, যেমন LiveData, Rx-এর Observable বা কোরুটিন Flow।

রুম-পেজিং

  • androidx.room:room-paging রিলিজ করা হয়েছে, যা androidx.paging.PagingSource রিটার্ন করা রুম কোয়েরির জন্য নেটিভ পেজিং ৩.০ সাপোর্ট প্রদান করে।

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun loadUsers(): PagingSource<Int, User>
    }
    
  • এই আর্টিফ্যাক্ট, Room-এর মাধ্যমে তৈরি করা androidx.paging.PagingSource ইমপ্লিমেন্টেশনকে Paging 3.0 API-এর উপরে তৈরি করা একটি ইমপ্লিমেন্টেশন দিয়ে প্রতিস্থাপন করে। নতুন PagingSource ইমপ্লিমেন্টেশন আলাদাভাবে কী পার্স করে, তাই Room-এর PagingSource-এ ম্যানুয়ালি দেওয়া যেকোনও কী-এর ক্ষেত্রে এই আচরণগত পরিবর্তন বিবেচনা করতে হবে, যার মধ্যে Pager-এর কনস্ট্রাক্টরের মাধ্যমে পাস করা initialKey-ও অন্তর্ভুক্ত। Key থেকে পৃষ্ঠা লোড করা শুরু হবে এবং Key হল প্রথম লোড করা আইটেম। এটি বর্তমান আচরণ থেকে আলাদা যেখানে LoadParams.Refresh.Key-কে ব্যবহারকারীর স্ক্রল পজিশন হিসেবে বিবেচনা করা হয় এবং আইটেমগুলি 'কী'-এর আগে এবং পরে উভয় ক্ষেত্রেই লোড করা হয়।

  • আর্টিফ্যাক্ট ঐচ্ছিক এবং অপ্ট-আউট করলে, Room 2.3-এ চালু করা Paging 3.0-এর জন্য বিদ্যমান সহায়তায় ফিরে যাবে। তবে, যারা পেজিং ৩.০ সহ রুম ব্যবহার করছেন তাদের জন্য এই আর্টিফ্যাক্টটি ভবিষ্যতের রিলিজে নন-অপশনাল হয়ে যাবে। চালু করতে, আপনার ক্লাসপাথে নতুন রুম-পেজিং আর্টিফ্যাক্ট যোগ করুন। আপনি Gradle ব্যবহার করলে, আপনার build.gradle-এ নিম্নলিখিত স্নিপেট যোগ করতে পারবেন:

    dependency {
      implementation("androidx.room:room-paging:2.4.0-alpha04")
    }
    

সমস্যার সমাধান

  • ফরেন কী লঙ্ঘন সংক্রান্ত অটোমেটিক মাইগ্রেশনে হওয়া সমস্যার সমাধান করা। (b/190113935)

ভার্সন 2.4.0-alpha03

১৬ জুন, ২০২১

androidx.room:room-*:2.4.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 2.4.0-alpha03-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • পরীক্ষা করা হচ্ছে এমন ডেটাবেস ক্লাসের জন্য নতুন কনস্ট্রাক্টর API প্রদান করে, অটোমেটিক মাইগ্রেশন যাতে কাজ করে সেই জন্য Room-এর MigrationTestHelper আপডেট করুন। এটি হেল্পারকে runMigrationsAndValidate-এর সময় একই উপায়ে অটোমেটিক মাইগ্রেশন যোগ করার অনুমতি দেয়।

সমস্যার সমাধান

  • Apple-এর M1 চিপে কাজ করার জন্য Room-এর SQLite নেটিভ লাইব্রেরিতে হওয়া সমস্যার সমাধান করা হয়েছে। (b/174695268

  • @Transaction ফাংশনের রিটার্ন টাইপ Flow (I56ddd, b/190075899) হলে Room-এ সমস্যা না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে

  • ইন্ডেক্স সংক্রান্ত অটোমেটিক মাইগ্রেশনে হওয়া সমস্যার সমাধান করুন। b/177673291

নির্ভরতা সংক্রান্ত আপডেট

  • রুমের KSP সহায়তা এখন KSP 1.5.10-1.0.0-beta01-এর উপর নির্ভর করে। (1ecb11, b/160322705)

ভার্সন 2.4.0-alpha02

৫ মে, ২০২১

androidx.room:room-*:2.4.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 2.4.0-alpha02-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • @ProvidedAutoMigrationSpec হল একটি নতুন API যা ঘোষণা করে যে RoomDatabase.Builder#addAutoMigrationSpec()-এর মাধ্যমে রানটাইমে AutoMigrationSpec প্রদান করা হবে। জটিল ডিপেন্ডেন্সি প্রয়োজন হলে, এই ফ্রেমওয়ার্কের সাহায্যে ডিপেন্ডেন্সি ইনজেকশন করে এই ধরনের স্পেসিফিকেশন প্রদান করা যায়।

সমস্যার সমাধান

  • অটোমেটিক মাইগ্রেশন সংক্রান্ত একটি সমস্যার সমাধান করা হয়েছে যেখানে @DatabaseViews সঠিকভাবে আবার তৈরি করা হচ্ছিল না।

এক্সটার্নাল কন্ট্রিবিউশন

  • Room-এর JournalMode.TRUNCATE-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে InvalidationTracker কলব্যাক কখনও কখনও ভুলভাবে, খুব দেরিতে বা একেবারেই ইনভোক করা হচ্ছিল না। Uli Bubenheimer | bubenheimer@users.noreply.github.com-কে ধন্যবাদ (b/154040286)

ভার্সন 2.4.0-alpha01

২১ এপ্রিল, ২০২১

androidx.room:room-*:2.4.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 2.4.0-alpha01-এ এইসব কমিট আছে।

নতুন ফিচার

  • অটোমেটিক মাইগ্রেশন: স্কিমা এক্সপোর্ট করা থাকলে, রুম এখন অটোমেটিক মাইগ্রেশন জেনারেট করার জন্য একটি API অফার করে। Room-কে জানাতে যে এটি একটি অটোমেটিক মাইগ্রেশন তৈরি করবে, @Database#autoMigrations ব্যবহার করে কোন ভার্সন থেকে কোন ভার্সনে অটোমেটিক মাইগ্রেট করা হবে তা ঘোষণা করা যেতে পারে। টেবিল ও কলামের নাম পরিবর্তন বা মুছে ফেলা সংক্রান্ত অতিরিক্ত তথ্য Room-এর প্রয়োজন হলে, @AutoMigration অ্যানোটেশন এমন ইনপুট সহ স্পেসিফিকেশন ক্লাস ঘোষণা করতে পারে। আরও তথ্যের জন্য @AutoMigration ডকুমেন্টেশন দেখুন।

সমস্যার সমাধান

  • defaultValue-এর সাথে অতিরিক্ত প্যারেন্থেসিস থাকলে, রুমের স্কিমা যাচাইকরণ সেটিকে ভুলভাবে যাচাই করে, এই সমস্যাটির সমাধান করা হয়েছে। b/182284899

ভার্সন 2.3.0

ভার্সন 2.3.0

২১ এপ্রিল, ২০২১

androidx.room:room-*:2.3.0 রিলিজ করা হয়েছে। ভার্সন 2.3.0-এ এইসব কমিট রয়েছে।

2.2.0 ভার্সনের পর থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন

  • বিল্ট-ইন Enum সাপোর্ট: কোনওটি প্রদান করা না হলে, Room এখন ডিফল্ট হিসেবে Enum থেকে String এবং এর বিপরীত টাইপ কনভার্টার ব্যবহার করবে। enum-এর জন্য টাইপ কনভার্টার আগে থেকেই থাকলে, Room ডিফল্টটির পরিবর্তে এটি ব্যবহার করার ক্ষেত্রে অগ্রাধিকার দেবে।
  • কোয়েরি কলব্যাক: কোয়েরি এক্সিকিউট হওয়ার সময়, Room এখন একটি সাধারণ কলব্যাক API RoomDatabase.QueryCallback অফার করে, যা ডিবাগ বিল্ডে লগ-ইন করার জন্য উপযোগী হতে পারে। RoomDatabase.Builder#setQueryCallback()-এর মাধ্যমে কলব্যাক সেট করা যেতে পারে।
  • আগে থেকেই প্যাকেজ করা উন্নতি: ইনপুট স্ট্রিম থেকে আগে থেকেই প্যাকেজ করা ডেটাবেস রিড করে ডেটাবেস তৈরি করার জন্য Room-এ এখন API আছে। এর ফলে, প্রি-প্যাকেজ ডেটাবেস gzip করা থাকলে, সেইসব ক্ষেত্রে এটি ব্যবহার করা যায়।
  • প্রদান করা টাইপ কনভার্টার: Room-এ এখন টাইপ কনভার্টারের ইনস্ট্যান্স প্রদান করার জন্য API আছে যাতে অ্যাপ সেগুলির ইনিশিয়ালাইজেশন কন্ট্রোল করতে পারে। Room-এ প্রদান করা হবে এমন টাইপ কনভার্টার চিহ্নিত করতে, নতুন অ্যানোটেশন @ProvidedTypeConverter ব্যবহার করুন।
  • RxJava3 সাপোর্ট: Room এখন RxJava3 টাইপ সাপোর্ট করে। RxJava2-এর মতো আপনি DAO পদ্ধতি ঘোষণা করতে পারেন যার রিটার্ন টাইপ হল Flowable, Single, Maybe এবং Completable। এছাড়াও, RxJava3-কে সাপোর্ট করার জন্য একটি নতুন আর্টিফ্যাক্ট androidx.room:room-rxjava3 উপলভ্য।
  • পেজিং ৩.০ সাপোর্ট: Room এখন @Query অ্যানোটেশন করা পদ্ধতির জন্য ইমপ্লিমেন্টেশন তৈরি করতে পারবে, যার রিটার্ন টাইপ হল androidx.paging.PagingSource।

ভার্সন 2.3.0-rc01

২৪ মার্চ, ২০২১

androidx.room:room-*:2.3.0-rc01 রিলিজ করা হয়েছে। ভার্সন 2.3.0-rc01-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • রুমের মাধ্যমে তৈরি করা Coroutine Flow কোয়েরি যাতে সাসপেন্ড করা withTransaction ব্লকে ব্যবহার করা যায় সেই জন্য সমস্যার সমাধান করুন। (I797bf)

Version 2.3.0-beta03

১০ মার্চ, ২০২১

androidx.room:room-*:2.3.0-beta03 রিলিজ করা হয়েছে। ভার্সন 2.3.0-beta03-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • KSP-এর জন্য ইনক্রিমেন্টাল কম্পাইলেশন সংক্রান্ত সহায়তা যোগ করা হয়েছে। (I031c1, b/176453350)

সমস্যার সমাধান

  • প্রধান থ্রেডে PagingSource তৈরি করলে ANR ট্রিগার হতে পারে এমন একটি সমস্যার সমাধান করা হয়েছে। (I42b74, b/181221318)
  • প্যাকেজ প্রাইভেটের পরিবর্তে @ExperimentalRoomApi দৃশ্যমানতা পাবলিক হিসেবে সেট করা হয়েছে। (b/181356119)

এক্সটার্নাল কন্ট্রিবিউশন

  • @SkipQueryVerification-এর সাথেও অ্যানোটেশন করা থাকলে, @Query অ্যানোটেশন করা DAO পদ্ধতিতে Room-কে POJO রিটার্ন টাইপ গ্রহণ করার অনুমতি দিন। @RawQuery অ্যানোটেটেড DAO পদ্ধতির জন্য যেভাবে করা হয়, ঠিক সেইভাবে কোয়েরির ফলাফলকে POJO রিটার্ন টাইপে কনভার্ট করার জন্য Room যথাসাধ্য চেষ্টা করবে। ‘Markus Riegel | hey@marcorei.com’-কে ধন্যবাদ। (I45acb)

ভার্সন 2.3.0-beta02

১৮ ফেব্রুয়ারি, ২০২১

androidx.room:room-*:2.3.0-beta02 রিলিজ করা হয়েছে। ভার্সন 2.3.0-beta02-এ এইসব কমিট আছে।

নতুন ফিচার

  • Room-এ এখন পরীক্ষামূলকভাবে Kotlin Symbol Processing KSP কাজ করে।

    KSP হল KAPT-এর বিকল্প যা Kotlin কম্পাইলারে নেটিভভাবে অ্যানোটেশন প্রসেসর রান করে এবং বিল্ড করার সময় উল্লেখযোগ্যভাবে কমায়।

    KSP-এর সাথে Room ব্যবহার করতে, আপনি KSP Gradle প্লাগ-ইন প্রয়োগ করতে এবং আপনার বিল্ড ফাইলে kapt কনফিগারেশন ksp দিয়ে পরিবর্তন করতে পারবেন। যেমন, kapt 'androidx.room:room-compiler:2.3.0-beta02'-এর পরিবর্তে ksp 'androidx.room:room-compiler:2.3.0-beta02' ব্যবহার করুন। আরও বিবরণের জন্য KSP ডকুমেন্টেশন দেখুন।

    মনে রাখবেন, KSP যেহেতু পরীক্ষামূলক, তাই প্রোডাকশন কোডের জন্য এখনও KAPT ব্যবহার করার পরামর্শ দেওয়া হয়। KAPT ব্যবহার করে এমন অন্য কোনও প্রসেসর না থাকলে, তবেই বিল্ড টাইম কমানো যায়। পরিচিত সমস্যার জন্য b/160322705 দেখুন।

ভার্সন 2.3.0-beta01

২৭ জানুয়ারি, ২০২১

androidx.room:room-*:2.3.0-beta01 রিলিজ করা হয়েছে। ভার্সন 2.3.0-beta01-এ এইসব কমিট আছে।

নতুন ফিচার

  • অটোমেটিক বন্ধ হয়ে যাওয়া ডেটাবেস: নির্দিষ্ট সময় পরে অ্যাক্সেস করা হয়নি এমন ডেটাবেস বন্ধ করার ক্ষমতা এখন Room-এর আছে। এটি একটি পরীক্ষামূলক ফিচার এবং RoomDatabase.Builder#setAutoCloseTimeout()-এ কল করে চালু করা যেতে পারে। একাধিক ডেটাবেস সহ অ্যাপ্লিকেশনের জন্য এই ফিচারটি উপযোগী।

সমস্যার সমাধান

  • একাধিক @Update বা আলাদা আলাদা কনফ্লিক্ট স্ট্র্যাটেজি সহ @Delete মেথড সহ Dao মেথড, যেখানে শুধুমাত্র একটি স্ট্র্যাটেজি সহ কোড তৈরি করা হবে এবং এর ফলে সংজ্ঞায়িত স্ট্র্যাটেজিটি উপেক্ষা করা হবে, সেই সমস্যাটি সমাধান করুন। (/I0b90d, b/176138543)

ভার্সন 2.3.0-alpha04

১৬ ডিসেম্বর, ২০২০

androidx.room:room-*:2.3.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 2.3.0-alpha04-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • কোয়েরি এক্সিকিউট করার সময়, Room এখন একটি সাধারণ কলব্যাক API RoomDatabase.QueryCallback অফার করে, যা ডিবাগ বিল্ডে লগ-ইন করার জন্য উপযোগী হতে পারে। RoomDatabase.Builder#setQueryCallback()-এর মাধ্যমে কলব্যাক সেট করা যেতে পারে। (Iaa513, b/174478034, b/74877608)
  • এখন থেকে, কোনও কনভার্টার প্রদান করা না হলে, Room ডিফল্ট হিসেবে Enum থেকে String এবং এর বিপরীত ধরনের কনভার্টার ব্যবহার করবে। enum-এর জন্য টাইপ কনভার্টার আগে থেকেই থাকলে, Room ডিফল্টটির পরিবর্তে এটি ব্যবহার করার ক্ষেত্রে অগ্রাধিকার দেবে। (b/73132006)

পরিচিত সমস্যা

  • Enum-এর জন্য রিডিংয়ের ক্ষেত্রে একমুখী টাইপ কনভার্টার আগে থেকেই থাকলে, Room ভুলবশত বিল্ট-ইন String থেকে Enum কনভার্টার ব্যবহার করতে পারে যা হয়ত কাঙ্ক্ষিত নয়। এটি একটি পরিচিত সমস্যা এবং এটিকে টু-ওয়ে কনভার্টার করে তুললে এই সমস্যার সমাধান করা যেতে পারে। দেখুন: b/175707691

সমস্যার সমাধান

  • নতুন JDK ভার্সনে Room ভুলভাবে ইনক্রিমেন্টাল অ্যানোটেশন প্রসেসিং বন্ধ করে দেওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (b/171387388)
  • একাধিক ক্লাস লোডার ব্যবহার করা হলে, জেনারেট করা ক্লাস খুঁজে পাওয়ার ক্ষেত্রে Room-এর সাথে হওয়া সমস্যার সমাধান করা হয়েছে। ‘Serendipity | 892449346@qq.com’ সমস্যার সমাধান করার জন্য ধন্যবাদ! (b/170141113)
  • Kotlin @Dao-এর বেস ক্লাসে JVM-এর আদিম জেনেরিক থাকলে, Room ভুল কোড জেনারেট করত, সেই সমস্যার সমাধান করা হয়েছে। (b/160258066)

এক্সটার্নাল কন্ট্রিবিউশন

  • WAL মোড চালু থাকলে এবং API 16 বা তার বেশি হলে, রুম এখন ডিফল্ট হিসেবে beginTransactionNonExclusive ব্যবহার করবে। ‘Ahmed I.’-কে ধন্যবাদ। Khalil | ahmedibrahimkhali@gmail.com’! (b/126258791)

ভার্সন 2.3.0-alpha03

১৪ অক্টোবর, ২০২০

androidx.room:room-*:2.3.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 2.3.0-alpha03-এ এইসব কমিট আছে।

নতুন ফিচার

  • অ্যাপ যাতে টাইপ কনভার্টার ইনিশিয়ালাইজ করা নিয়ন্ত্রণ করতে পারে, সেই জন্য Room-এ এখন টাইপ কনভার্টারের ইনস্ট্যান্স প্রদান করার API আছে। Room-কে প্রদান করা হবে এমন কোনও টাইপ কনভার্টারকে চিহ্নিত করতে, নতুন অ্যানোটেশন @ProvidedTypeConverter ব্যবহার করুন। ‘mzgreen yairobbe@gmail.com’-কে ধন্যবাদ। (Ie4fa5, b/121067210)

  • ইনপুট স্ট্রিম থেকে রিড করা প্রি-প্যাকেজড ডেটাবেস ব্যবহার করে ডেটাবেস তৈরি করার জন্য Room-এ এখন API আছে। এর ফলে, প্রি-প্যাকেজ ডেটাবেস gzip করা থাকলে, সেইসব ক্ষেত্রে এটি ব্যবহার করা যায়। ‘Ahmed El-Helw ahmedre@gmail.com’ (3e6792, b/146911060) কে ধন্যবাদ

API-তে পরিবর্তন

  • @ForeignKey অ্যানোটেশনে উল্লেখ না থাকা টার্গেট যোগ করা হয়েছে, যাতে @Entity অ্যানোটেশনের বাইরে এটি ব্যবহার করা না যায়। (আইসড1e)

  • RoomDatabase.java-এ mCallbacks ফিল্ডটি এখন লুকানো আছে। (d576cb, b/76109329)

সমস্যার সমাধান

  • TypeConverters ডকুমেন্টেশনে আপডেট করে এটি স্পষ্ট করা হয়েছে যে TypeConverters শুধুমাত্র কলাম / ফিল্ড কনভার্ট করার জন্য ব্যবহার করা যেতে পারে, রো কনভার্ট করার জন্য নয়। (I07c56, b/77307836)

  • Kotlin "প্রিমিটিভ" সহ জেনেরিক সুপার টাইপ সহ Dao-তে কম্পাইলার সংক্রান্ত সমস্যা সমাধান করতে DaoProcessor-এ আপডেট করুন। (Ice6bb, b/160258066)

  • থ্রেডিং স্পষ্ট করতে, 'অবজার্ভার' পদ্ধতি যোগ করা/সরানো সংক্রান্ত ডকুমেন্টেশন আপডেট করুন (Ifd1d9, b/153948821)

  • Room-এর একটি সমস্যার সমাধান করা হয়েছে, যেখানে FTS টেবিল ভুলভাবে যাচাই করা হচ্ছিল, যা তাদের rowid কলাম ঘোষণা করেছিল। (d62ebc, b/145858914)

এক্সটার্নাল কন্ট্রিবিউশন

  • তুর্কি (5746e3) সম্পর্কিত বড়/ছোট হাতের অক্ষর সংক্রান্ত সমস্যার সমাধান করা, b/68159494

  • Android Lollipop-এ সমস্যা এড়াতে ConcurrentHashMap-এর মধ্যে RoomDatabase-এর পরিবর্তে Collections.synchronizedMap() ব্যবহার করুন (d1cfc7, b/162431855)

  • প্রি-প্যাকেজ করা DB কপি করা হলে, onOpenPrepackagedDatabase কলব্যাক যোগ করুন। (I1ba74, b/148934423)

ভার্সন 2.3.0-alpha02

২২ জুলাই, ২০২০

androidx.room:room-*:2.3.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 2.3.0-alpha02-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • RxJava3 সহায়তা: Room এখন RxJava3 টাইপ কাজ করে। RxJava2-এর মতো, আপনি এমন DAO পদ্ধতি ঘোষণা করতে পারেন যার রিটার্ন টাইপ হল Flowable, Single, Maybe এবং Completable। এছাড়াও, RxJava3-এর জন্য নতুন আর্টিফ্যাক্ট androidx.room:room-rxjava3 উপলভ্য। (b/152427884)

API-তে পরিবর্তন

  • Kotlin Object ক্লাসে @TypeConverter ঘোষণা করা এখন কাজ করে। (b/151110764)
  • Room ইনক্রিমেন্টাল অ্যানোটেশন প্রসেসিং বিকল্প এখন ডিফল্ট হিসেবে চালু করা আছে। (b/112110217)

Version 2.3.0-alpha01

১০ জুন, ২০২০

androidx.room:room-*:2.3.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 2.3.0-alpha01-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • পেজিং ৩.০ সাপোর্ট: Room এখন @Queryঅ্যানোটেটেড পদ্ধতির জন্য ইমপ্লিমেন্টেশন তৈরি করতে পারবে, যার রিটার্ন টাইপ হল androidx.paging.PagingSource।

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun pagingSource(): PagingSource<Int, User>
    }
    

API-তে পরিবর্তন

  • @RewriteQueriesToDropUnusedColumns হল একটি নতুন সুবিধাজনক অ্যানোটেশন যা কোয়েরিতে ‘*’ প্রজেকশনকে এমনভাবে রিরাইট করে যাতে ফলাফলে অব্যবহৃত কলামগুলি সরিয়ে দেওয়া যায়।
  • প্রসেসর বিকল্প room.expandProjection এখন বন্ধ করা হয়েছে। @RewriteQueriesToDropUnusedColumns-কে স্টার প্রজেকশন সহ রুম অপ্টিমাইজ করার কোয়েরির বিকল্প হিসেবে ব্যবহার করুন। মনে রাখবেন, @RewriteQueriesToDropUnusedColumns রিটার্ন টাইপের ক্ষেত্রে অফার করা কলাম সংক্রান্ত বিরোধ সমাধানের room.expandProjection বিকল্পকে প্রতিস্থাপন করে না, যেটিতে @Embedded ফিল্ড থাকে।

সমস্যার সমাধান

  • ইনক্রিমেন্টাল অ্যানোটেশন প্রসেসর চালু করতে ব্যবহৃত JDK ভার্সন Room সঠিকভাবে শনাক্ত করতে না পারার সমস্যা সমাধান করা হয়েছে। Blaz Solar (me@blaz.solar)-এর (b/155215201) প্রতি কৃতজ্ঞতা জানাই
  • Room এখন তার ANTLR নির্ভরতা অ্যানোটেশন প্রসেসরের সাথে এম্বেড করে যাতে অন্যান্য প্রসেসরের সাথে ভার্সন সংক্রান্ত কোনও সমস্যা না হয়, কারণ তারাও ANTLR ব্যবহার করে। (b/150106190)

ভার্সন 2.2.6

ভার্সন ২.২.৬

১৬ ডিসেম্বর, ২০২০

androidx.room:room-*:2.2.6 রিলিজ করা হয়েছে। ভার্সন 2.2.6-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • নতুন JDK ভার্সনে Room ভুলভাবে ইনক্রিমেন্টাল অ্যানোটেশন প্রসেসিং বন্ধ করে দেওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (b/171387388)

ভার্সন 2.2.5

ভার্সন ২.২.৫

১৮ মার্চ, ২০২০

androidx.room:room-*:2.2.5 রিলিজ করা হয়েছে। ভার্সন 2.2.5-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • MultiInstanceInvalidationService-কে directBootAware করুন। ‘Mygod contact-git@mygod.be’ (b/148240967) টিমের প্রতি কৃতজ্ঞতা জানাই
  • মাল্টি-ইনস্ট্যান্স বাতিল করার সুবিধা চালু থাকলে এবং ডেটাবেসে FTS এন্টিটি থাকলে ক্র্যাশ হওয়ার কারণ সম্পর্কিত সমস্যার সমাধান করা হয়েছে। (b/148969394)
  • Room অ্যানোটেশন প্রসেসরে SQLite নেটিভ লাইব্রেরি লোড করার সময় হওয়া সমস্যার সমাধান করা হয়েছে। এর ফলে প্যারালাল কম্পাইলেশনের কারণে কম্পাইলার ক্র্যাশ করত। (b/146217083)

ভার্সন ২.২.৪

ভার্সন ২.২.৪

১৯ ফেব্রুয়ারি, ২০২০

androidx.room:room-common:2.2.4, androidx.room:room-compiler:2.2.4, androidx.room:room-guava:2.2.4, androidx.room:room-ktx:2.2.4, androidx.room:room-migration:2.2.4, androidx.room:room-runtime:2.2.4, androidx.room:room-rxjava2:2.2.4 এবং androidx.room:room-testing:2.2.4 রিলিজ করা হয়েছে। ভার্সন 2.2.4-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • ট্রানজ্যাকশন সাসপেন্ড করা সংক্রান্ত একটি সমস্যার সমাধান করা হয়েছে, যেখানে ট্রানজ্যাকশন শুরু হওয়ার আগেই কোরাউটিন বাতিল করা হলে সেটি ডেডলক হয়ে যেত। (b/148181325)
  • JDK 9-এর মাধ্যমে বিল্ড করার সময় @Generated ভুলভাবে ব্যবহার করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (b/146538330)
  • Kotlin-এ DAO ইন্টারফেসে কোনও কনক্রিট ফাংশন থাকলে, Room ভুল কোড জেনারেট করত, সেই সমস্যার সমাধান করা হয়েছে। (b/146825845)

ভার্সন 2.2.3

ভার্সন 2.2.3

১৮ ডিসেম্বর, ২০১৯

androidx.room:room-*:2.2.3 রিলিজ করা হয়েছে। ভার্সন 2.2.3-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • একটি সমস্যার সমাধান করা হয়েছে যেখানে Room এমন একটি ডেটাবেস যাচাই করতে পারেনি যেটি কোনও মাইগ্রেশনের মধ্যে দিয়ে যায়নি এবং সেটির স্কিমায় ইন্ডেক্স সহ পুরনো হ্যাশ রয়েছে। (b/139306173)

ভার্সন ২.২.২

ভার্সন 2.2.2

২০ নভেম্বর, ২০১৯

androidx.room:room-*:2.2.2 রিলিজ করা হয়েছে। ভার্সন 2.2.2-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ৯৯৯টির বেশি সারি সহ এক-থেকে-এক সম্পর্ক সংগ্রহ করার ফলে Room-এর নাল রিলেটিং আইটেম রিটার্ন করার সমস্যা সমাধান করা হয়েছে। (b/143105450)

ভার্সন ২.২.১

ভার্সন ২.২.১

২৩ অক্টোবর, ২০১৯

androidx.room:room-*:2.2.1 রিলিজ করা হয়েছে। ভার্সন 2.2.1-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • কম্পাইলার বিকল্পexpandProjection চালু থাকলে Room ভুল করে CURSOR_MISMATCH সম্পর্কে সতর্কতা দেখাত, সেই বাগটি সমাধান করা হয়েছে। (b/140759491)
  • কম্পাইল করার সময় কোয়েরি যাচাই করার জন্য ব্যবহৃত নেটিভ লাইব্রেরি খুঁজে না পাওয়া গেলে, সেটি ম্যানেজ করার জন্য আবার চেষ্টা করার মেকানিজম যোগ করা হয়েছে।

ভার্সন 2.2.0

ভার্সন 2.2.0

৯ অক্টোবর, ২০১৯

androidx.room:room-*:2.2.0 রিলিজ করা হয়েছে। ভার্সন 2.2.0-এ এইসব কমিট আছে।

ভার্সন 2.1.0-এর পর থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন

  • প্রি-প্যাকেজড ডেটাবেস: RoomDatabase.Builder-এ দুটি নতুন API এখন উপলভ্য, যা আগে থেকেই পপুলেট করা ডেটাবেস ফাইল ব্যবহার করে RoomDatabase তৈরি করতে সাহায্য করে। createFromAsset() হল যখন আগে থেকে পূরণ করা ডেটাবেস ফাইলটি APK-এর অ্যাসেট ফোল্ডারে থাকে, অন্যদিকে createFromFile() হল যখন ফাইলটি যেকোনও লোকেশনে থাকে। এইসব API-এর ব্যবহার ধ্বংসাত্মক মাইগ্রেশনের আচরণ পরিবর্তন করে, যাতে ফলব্যাক মাইগ্রেশনের সময়, Room উপলভ্য থাকলে আগে থেকে পূরণ করা ডেটাবেস আবার কপি করার চেষ্টা করবে, অন্যথায় এটি শুধু সমস্ত টেবিল ড্রপ করে আবার তৈরি করার জন্য ফলব্যাক করে। b/62185732
  • স্কিমা ডিফল্ট ভ্যালু: @ColumnInfo-এ এখন একটি নতুন প্রপার্টি defaultValue আছে যা কলামের ডিফল্ট ভ্যালু নির্দিষ্ট করতে ব্যবহার করা যেতে পারে। ডিফল্ট ভ্যালু হল ডেটাবেস স্কিমার অংশ এবং উল্লেখ করা হলে মাইগ্রেশনের সময় এটি যাচাই করা হবে। b/64088772
  • একাধিক-থেকে-একাধিক সম্পর্ক: @Relation-এ এখন একটি নতুন প্রপার্টি associateBy আছে, যা একটি নতুন অ্যানোটেশন @Junction নেয়। এটি এমন সম্পর্ক ঘোষণা করতে ব্যবহৃত হয় যা একটি জাংশন টেবিলের (এটি জয়েন টেবিল নামেও পরিচিত) মাধ্যমে পূরণ করতে হয়। b/69201917
  • এক-থেকে-এক সম্পর্ক: POJO ফিল্ডে @Relation দিয়ে অ্যানোটেট করা List বা Set ধরনের বিধিনিষেধ তুলে নেওয়া হয়েছে, যার ফলে সিঙ্গেল-ভ্যালু সম্পর্ক দেখানো যাবে। b/62905145
  • টার্গেট এন্টিটি: DAO অ্যানোটেশন @Insert, @Update এবং @Delete-এ এখন একটি নতুন প্রপার্টি targetEntity আছে, যা টার্গেট টেবিল নির্দিষ্ট করার অনুমতি দেয়, DAO পদ্ধতিটি কাজ করার জন্য তৈরি করা হয়েছে। এর ফলে, সেইসব DAO মেথডের প্যারামিটারগুলি ইচ্ছামতো POJO হতে পারে, যেগুলিকে আংশিক এন্টিটি হিসেবে ব্যাখ্যা করা হবে। বাস্তবে, এটি আংশিক ইনসার্ট, মুছে ফেলা ও আপডেট করার অনুমতি দেয়। b/127549506
  • Coroutines Flow: @Query DAO পদ্ধতি এখন Flow<T> রিটার্ন টাইপের হতে পারে। কোয়েরিতে পর্যবেক্ষণ করা টেবিল বাতিল হয়ে গেলে, রিটার্ন করা Flow ভ্যালুর নতুন সেট আবার ইমিট করবে। Channel<T> রিটার্ন টাইপ সহ DAO ফাংশন ঘোষণা করা একটি সমস্যা, এর পরিবর্তে Room আপনাকে Flow ব্যবহার করতে এবং তারপরে Flow-কে Channel-এ কনভার্ট করতে পার্শ্ববর্তী ফাংশন ব্যবহার করতে উৎসাহিত করে। b/130428884
  • Gradle ইনক্রিমেন্টাল অ্যানোটেশন প্রসেসর: Room এখন একটি Gradle আইসোলেটিং অ্যানোটেশন প্রসেসর এবং প্রসেসর বিকল্প room.incremental-এর মাধ্যমে ইনক্রিমেন্টেবিলিটি চালু করা যেতে পারে। আরও তথ্যের জন্য Room কম্পাইলার বিকল্প দেখুন। আপনি কোনও সমস্যার সম্মুখীন হলে, এখানে বাগ ফাইল করুন। আমরা ভবিষ্যতে, স্টেবল ভার্সনে ডিফল্ট হিসেবে ইনক্রিমেন্টেবিলিটি চালু করার পরিকল্পনা করছি। b/112110217
  • প্রোজেকশন এক্সপ্যান্ড করা: একটি নতুন পরীক্ষামূলক কম্পাইলার বিকল্প room.expandProjection যোগ করা হয়েছে যা রুমকে একটি কোয়েরি আবার লিখতে বাধ্য করে একটি স্টার প্রোজেকশন সহ শুধুমাত্র রিটার্নিং টাইপ POJO-তে কলামগুলি অন্তর্ভুক্ত করতে। যেমন, @Query("SELECT * FROM Song") সহ DAO পদ্ধতির জন্য, যা শুধুমাত্র দুটি ফিল্ড সহ SongIdAndTitle নামের একটি POJO রিটার্ন করে। তারপরে, রিটার্ন টাইপ পূরণ করার জন্য প্রয়োজনীয় কলামের ন্যূনতম সেট ফেচ করার জন্য Room কোয়েরিটি SELECT id, title FROM Song হিসেবে আবার লিখবে। এটি মূলত CURSOR_MISMATCH সেই সতর্কতা সরিয়ে দেয় যা কোয়েরি অতিরিক্ত কলাম রিটার্ন করলে দেখানো হয় যেগুলি রিটার্ন করা POJO ধরনের কোনও ফিল্ডের সাথে ম্যাচ করে না।

ভার্সন 2.2.0-rc01

৫ সেপ্টেম্বর, ২০১৯

androidx.room:room:2.2.0-rc01 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত কমিট এখানে পাওয়া যাবে।

রুম 2.2.0-beta01-এর পর থেকে সর্বজনীন কোনও পরিবর্তন করা হয়নি।

ভার্সন 2.2.0-beta01

২২ আগস্ট, ২০১৯

androidx.room:room-*:2.2.0-beta01 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত কমিটগুলি এখানে পাওয়া যাবে।

সমস্যার সমাধান

  • একটি সমস্যা সমাধান করা হয়েছে যেখানে Coroutine Flow কোয়েরি নির্দিষ্ট সময় পরে নতুন ভ্যালু রিলিজ করা বন্ধ করে দিত। (b/139175786)
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে Room 1.0 থেকে মাইগ্রেট না করা ডেটাবেস খোলার সময় Room লিগ্যাসি স্কিমা হ্যাশ কোড গ্রহণ করত না, যার ফলে ভুল স্কিমার কারণে রানটাইম ক্র্যাশ হত। (b/139306173)

ভার্সন 2.2.0-alpha02

৭ আগস্ট, ২০১৯

androidx.room:room-*:2.2.0-alpha02 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত কমিট এখানে পাওয়া যাবে।

নতুন ফিচার

  • করুটিন ফ্লো: @Query DAO মেথড এখন Flow<T> রিটার্ন টাইপের হতে পারে। কোয়েরিতে পর্যবেক্ষণ করা টেবিল ভুল হলে, রিটার্ন করা Flow ভ্যালুর নতুন সেট আবার ইমিট করবে। Channel<T> রিটার্ন টাইপ সহ DAO ফাংশন ঘোষণা করা একটি সমস্যা, এর পরিবর্তে Room আপনাকে Flow ব্যবহার করতে এবং তারপরে Flow-কে Channel-এ কনভার্ট করতে পার্শ্ববর্তী ফাংশন ব্যবহার করতে উৎসাহিত করে। b/130428884
  • প্রজেকশন বাড়ানো: একটি নতুন পরীক্ষামূলক কম্পাইলার বিকল্প room.expandProjection যোগ করা হয়েছে যা Room-কে একটি কোয়েরি আবার লিখতে বাধ্য করে তারকা প্রজেকশন সহ, যাতে শুধু রিটার্নিং টাইপ POJO-এর কলাম থাকে। যেমন, @Query("SELECT * FROM Song") সহ DAO পদ্ধতির জন্য, যা শুধুমাত্র দুটি ফিল্ড সহ SongIdAndTitle নামের একটি POJO রিটার্ন করে। তারপর Room কোয়েরিটি আবার লিখে SELECT id, title FROM Song করবে যাতে রিটার্ন টাইপ পূরণ করার জন্য প্রয়োজনীয় ন্যূনতম কলামের সেট ফেচ করা যায়। এটি মূলত সেই CURSOR_MISMATCH সতর্কতা দূর করে যা কোয়েরি অতিরিক্ত কলাম রিটার্ন করলে দেখানো হয়, যা রিটার্ন করা POJO ধরনের কোনও ফিল্ডের সাথে ম্যাচ করে না।
  • onDestructiveMigrate হল একটি নতুন কলব্যাক API যা RoomDatabase.Callback-এ যোগ করা হয়েছে যখন Room কোনও ডেটাবেস ধ্বংসাত্মকভাবে মাইগ্রেট করে। b/79962330

সমস্যার সমাধান

  • ফিল্ড সুরক্ষিত থাকলে, Room-এ field setter মেথড ব্যবহার করে ভুল কোড জেনারেট করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/136194628
  • মাল্টি-ইনস্ট্যান্স ইনভ্যালিডেশন চালু করা থাকলে এবং ইনভ্যালিডেশন সার্ভিস বন্ধ করা থাকলে, দ্বিতীয় প্রসেসে InvalidationTracker-এর NPE সংক্রান্ত সমস্যা সমাধান করা হয়েছে। b/137454915
  • @RawQuery দিয়ে চিহ্নিত করা ইনহেরিট করা সাসপেন্ড ফাংশনের রিটার্ন টাইপ Room সঠিকভাবে শনাক্ত করতে না পারার সমস্যা সমাধান করা হয়েছে। b/137878827
  • @Relation-এর জন্য জেনারেট করা কোড আপডেট করা হয়েছে, যখন সম্পর্কিত কী BLOB ধরনের হয়, যাতে তুলনামূলক ByteBuffer ব্যবহার করা যায়। b/137881998
  • @Insert, @Update ও @Delete-এর আংশিক এন্টিটি প্যারামিটার হিসেবে ব্যবহৃত POJO-তে সেটার না থাকার ব্যাপারে Room অভিযোগ জানালে, সেই সমস্যার সমাধান করা হয়েছে। b/138664463
  • একটি বাগ সমাধান করা হয়েছে যেখানে কোনও এন্টিটি ক্লাস নির্দিষ্ট DAO মেথডে ব্যবহার করা হলে, Room @Entity-এর মাধ্যমে উপেক্ষা করা কলামের জন্য গেটার ও সেটার মিসিং হওয়ার ব্যাপারে অভিযোগ জানাত। b/138238182
  • নামযুক্ত বাইন্ডিং আর্গুমেন্টকে পজিশনাল আর্গুমেন্টে সঠিকভাবে কনভার্ট করতে না পারার ফলে রানটাইম এক্সেপশন হওয়ার সমস্যা সমাধান করা হয়েছে। এই সমস্যাটি আবার ব্যবহার করা প্যারামিটার সহ কোয়েরি এক্সিকিউট করার সময় হয়। b/137254857

ভার্সন 2.2.0-alpha01

১০ জুলাই, ২০১৯

নতুন ফিচার

  • প্রি-প্যাকেজড ডেটাবেস: RoomDatabase.Builder-এ দুটি নতুন API এখন উপলভ্য, যা আগে থেকেই পপুলেট করা ডেটাবেস ফাইল ব্যবহার করে RoomDatabase তৈরি করতে সাহায্য করে। createFromAsset() হল যখন আগে থেকে পূরণ করা ডেটাবেস ফাইলটি APK-এর অ্যাসেট ফোল্ডারে থাকে, অন্যদিকে createFromFile() হল যখন ফাইলটি যেকোনও লোকেশনে থাকে। এইসব API-এর ব্যবহার ধ্বংসাত্মক মাইগ্রেশনের আচরণ পরিবর্তন করে, যাতে ফলব্যাক মাইগ্রেশনের সময়, Room আগে থেকে পূরণ করা ডেটাবেস উপলভ্য থাকলে সেটি আবার কপি করার চেষ্টা করবে, অন্যথায় এটি সমস্ত টেবিল ড্রপ করে আবার তৈরি করবে। b/62185732
  • স্কিমা ডিফল্ট ভ্যালু: @ColumnInfo-এ এখন একটি নতুন প্রপার্টি defaultValue আছে যা কলামের ডিফল্ট ভ্যালু নির্দিষ্ট করতে ব্যবহার করা যেতে পারে। ডিফল্ট ভ্যালু হল ডেটাবেস স্কিমার অংশ এবং উল্লেখ করা থাকলে মাইগ্রেশনের সময় যাচাই করা হবে। b/64088772

    মনে রাখবেন: আপনার ডেটাবেস স্কিমায় আগে থেকেই ডিফল্ট ভ্যালু থাকলে, যেমন ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z-এর মাধ্যমে যোগ করা ভ্যালু এবং আপনি একই কলামে @ColumnInfo-এর মাধ্যমে ডিফল্ট ভ্যালু সংজ্ঞায়িত করার সিদ্ধান্ত নিলে, আপনাকে হয়ত অনির্ধারিত ডিফল্ট ভ্যালু যাচাই করার জন্য মাইগ্রেশন প্রদান করতে হবে। আরও তথ্যের জন্য রুম মাইগ্রেশন দেখুন।

  • একাধিক-থেকে-একাধিক সম্পর্ক: @Relation-এ এখন একটি নতুন প্রপার্টি associateBy আছে, যা একটি নতুন অ্যানোটেশন @Junction নেয়। এটি এমন সম্পর্ক ঘোষণা করতে ব্যবহৃত হয় যা একটি জাংশন টেবিলের (যা জয়েন টেবিল নামেও পরিচিত) মাধ্যমে পূরণ করতে হয়। b/69201917
  • এক-থেকে-এক সম্পর্ক: POJO ফিল্ডে @Relation দিয়ে অ্যানোটেট করা List বা Set ধরনের বিধিনিষেধ তুলে নেওয়া হয়েছে, যার ফলে সিঙ্গেল-ভ্যালু সম্পর্ক দেখানো যাবে। b/62905145
  • টার্গেট এন্টিটি: DAO অ্যানোটেশন @Insert, @Update এবং @Delete-এ এখন একটি নতুন প্রপার্টি targetEntity আছে, যা DAO পদ্ধতি যে টার্গেট টেবিলের উপর কাজ করবে তা নির্দিষ্ট করার অনুমতি দেয়। এর ফলে, সেইসব DAO মেথডের প্যারামিটারগুলি ইচ্ছামতো POJO হতে পারে, যেগুলিকে আংশিক এন্টিটি হিসেবে ব্যাখ্যা করা হবে। ব্যবহারিক ক্ষেত্রে, এটি আংশিক ইনসার্ট, মুছে ফেলা এবং আপডেট করার অনুমতি দেয়। b/127549506
  • Gradle ইনক্রিমেন্টাল অ্যানোটেশন প্রসেসর: Room এখন একটি Gradle আইসোলেটিং অ্যানোটেশন প্রসেসর এবং প্রসেসর বিকল্প room.incremental-এর মাধ্যমে ইনক্রিমেন্টেবিলিটি চালু করা যেতে পারে। আরও তথ্যের জন্য রুম কম্পাইলার বিকল্প দেখুন। আপনি কোনও সমস্যার সম্মুখীন হলে, এখানে সমস্যা ফাইল করুন। আমরা ভবিষ্যতে, স্থিতিশীল ভার্সনে ডিফল্ট হিসেবে ইনক্রিমেন্ট করার সুবিধা চালু করার পরিকল্পনা করেছি। b/112110217

সমস্যার সমাধান

  • কোয়েরি সম্পূর্ণ হওয়ার আগে কোয়েরির Rx স্ট্রিম ডিসপোজ করা হলে, রুম আর গ্লোবাল এরর হ্যান্ডলারের কাছে EmptySetResultException প্রোপাগেট করবে না। b/130257475
  • @RawQuery দিয়ে অ্যানোটেট করা সাসপেন্ড DAO ফাংশনে রিটার্ন টাইপ না থাকলে Room ভুল সমস্যার মেসেজ দেখাত। এই সমস্যার সমাধান করা হয়েছে। b/134303897
  • রুম আর র টাইপ সহ DAO অ্যাডাপ্টার তৈরি করবে না। b/135747255

ভার্সন 2.1.0

ভার্সন 2.1.0

১৩ জুন, ২০১৯

2.1.0-rc01 থেকে কোনও পরিবর্তন না করেই Room 2.1.0 রিলিজ করা হয়েছে। ভার্সনে অন্তর্ভুক্ত কমিট এখানে পাওয়া যাবে।

2.0.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • FTS: Room এখন ম্যাপিং সহ এন্টিটি কাজ করে FTS3 বা FTS4 টেবিল। @Entity দিয়ে অ্যানোটেট করা ক্লাসগুলিকে এখন @Fts3 বা @Fts4 দিয়ে অতিরিক্ত অ্যানোটেট করে ম্যাপিং ফুল-টেক্সট সার্চ টেবিল সহ ক্লাস ঘোষণা করা যাবে। আরও কাস্টমাইজেশনের জন্য FTS বিকল্পগুলি অ্যানোটেশনের পদ্ধতির মাধ্যমে উপলভ্য।
  • ভিউ: Room এখন স্টোর করা কোয়েরি হিসেবে কোনও ক্লাস ঘোষণা করার সুবিধা দেয়, এটি ভিউ নামেও পরিচিত। এটি @DatabaseView অ্যানোটেশন ব্যবহার করে করা হয়।
  • কোরুটিন: DAO মেথড এখন সাসপেন্ড ফাংশন হতে পারে। এই কার্যকারিতার সুবিধা নিতে আপনার ডিপেন্ডেন্সিতে room-ktx অন্তর্ভুক্ত করুন। ktx আর্টিফ্যাক্ট এছাড়াও কোরাউটিনের মধ্যে ডেটাবেস ট্রানজ্যাকশন পারফর্ম করার জন্য RoomDatabase.withTransaction এক্সটেনশন ফাংশন প্রদান করে।
  • অটো ভ্যালু: Room এখন AutoValue অ্যানোটেশন করা ক্লাসকে এন্টিটি ও POJO হিসেবে ঘোষণা করার সুবিধা দেয়। 'রুম' অ্যানোটেশন @PrimaryKey, @ColumnInfo, @Embedded ও @Relation এখন অটো ভ্যালু অ্যানোটেটেড ক্লাসের অ্যাবস্ট্রাক্ট পদ্ধতিতে ঘোষণা করা যাবে। মনে রাখবেন, এইসব অ্যানোটেশনকে অবশ্যই @CopyAnnotations-এর সাথে থাকতে হবে, যাতে Room সেগুলি সঠিকভাবে বুঝতে পারে।
  • অতিরিক্ত অ্যাসিঙ্ক সাপোর্ট: @Insert, @Delete বা @Update দিয়ে অ্যানোটেট করা DAO পদ্ধতি, এর সাথে @Query যাতে INSERT, DELETE বা UPDATE স্টেটমেন্ট আছে, এখন Rx রিটার্ন টাইপ Completable, Single, Maybe, এবং Guava-এর রিটার্ন টাইপ ListenableFuture সাপোর্ট করে এবং এগুলি সাসপেন্ড ফাংশনও হতে পারে।
  • enableMultiInstanceInvalidation হল RoomDatabase.Builder-এর একটি নতুন API যা একই ডেটাবেস ফাইল ব্যবহার করে একাধিক RoomDatabase ইনস্ট্যান্স জুড়ে ইনভ্যালিডেশন চালু করতে সাহায্য করে।
  • fallbackToDestructiveMigrationOnDowngrade হল RoomDatabase.Builder-এর একটি নতুন API যা কোনও ডাউনগ্রেড হলে অটোমেটিক ডেটাবেস আবার তৈরি করে।
  • ignoredColumns হল @Entity অ্যানোটেশনের একটি নতুন API যা নাম অনুসারে উপেক্ষিত ফিল্ডের তালিকা তৈরি করতে ব্যবহার করা যেতে পারে।
  • Room এখন ডেটা ক্লাসে Kotlin-এর প্রাথমিক কনস্ট্রাক্টর সঠিকভাবে ব্যবহার করবে vars হিসেবে প্রপার্টি ঘোষণা করার প্রয়োজনীয়তা এড়িয়ে।

ভার্সন 2.1.0-rc01

২৯ মে, ২০১৯

সমস্যার সমাধান

  • আগে থেকেই সেট-আপ করা temp_store কনফিগারেশনের কারণে হতে পারে এমন রুম ইনিশিয়ালাইজেশন সংক্রান্ত সমস্যা সমাধান করা হয়েছে। b/132602198
  • SQLite 3.27.0 এবং তার পরবর্তী যেকোনও ভার্সন ব্যবহারকারীদের জন্য ডবল কোট ব্যবহার সংক্রান্ত সতর্কতা ঠিক করা হয়েছে। b/131712640
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে একাধিক ইনভ্যালিডেশন চেক প্যারালালভাবে হলে ইনভ্যালিডেশনট্র্যাকার ক্র্যাশ করত। b/133457594

ভার্সন 2.1.0-beta01

৭ মে, ২০১৯

2.1.0-alpha07 থেকে কোনও পরিবর্তন ছাড়াই androidx.room 2.1.0-beta01 রিলিজ করা হয়েছে। এই ভার্সনে অন্তর্ভুক্ত কমিট এখানে পাওয়া যাবে।

ভার্সন 2.1.0-alpha07

২৫ এপ্রিল, ২০১৯

API / আচরণগত পরিবর্তন

  • এক্সটেনশন ফাংশন RoomDatabase.withTransaction পরিবর্তন করে CoroutineScope-কে রিসিভার হিসেবে ব্যবহার করা যাবে না। এটি অতিরিক্ত coroutineScope { } র‍্যাপার এড়িয়ে যাওয়া আটকায় যা ট্রানজ্যাকশন ব্লকে একসাথে জিনিসপত্র চালানোর জন্য প্রয়োজন।

সমস্যার সমাধান

  • Kotlin DAO ফাংশনের জন্য Room-এর TypeConverter ম্যাচ করতে না পারার সমস্যা সমাধান করা হয়েছে, এই ফাংশনে Collection ধরনের প্যারামিটার থাকে। b/122066791

ভার্সন 2.1.0-alpha06

২২ মার্চ, ২০১৯

API / আচরণে পরিবর্তন

  • অ্যাসিঙ্ক ট্রানজ্যাকশন কোয়েরি এখন সিরিয়ালাইজ করা হয় যাতে Room ডেটাবেস ট্রানজ্যাকশন এক্সিকিউট করার জন্য একাধিক থ্রেড ব্যবহার না করে। ট্রানজ্যাকশনের জন্য ব্যবহৃত এক্সিকিউটর কনফিগার করার অনুমতি দিতে RoomDatabase.Builder.setTransactionExecutor(Executor) যোগ করা হয়েছে।
  • RoomDatabase.runInTransaction(Callable) আর RuntimeExceptions-এ চেক করা ব্যতিক্রম র‍্যাপ করবে না। b/128623748

সমস্যার সমাধান

  • Fixed a bug where the invalidation tracker would stop observing a content table if observers for both the content table and an external content FTS table were added. b/128508917
  • SQLite 3.24.0-এর সাথে ম্যাচ করার জন্য Room SQLite গ্রামার আপডেট করা হয়েছে। b/110883668

ভার্সন 2.1.0-alpha05

১৩ মার্চ, ২০১৯

নতুন ফিচার

  • এক্সটেনশন ফাংশন RoomDatabase.withTransaction আপনাকে নিরাপদে কোরাউটিনের মধ্যে ডেটাবেস ট্রানজ্যাকশন পারফর্ম করতে দেয়। room-ktx আর্টিফ্যাক্টে কোরাউটিন সহায়তার সাথে রুম এক্সটেনশন ফাংশন উপলভ্য।
  • @Transaction দিয়ে অ্যানোটেট করা নন-অ্যাবস্ট্রাক্ট DAO পদ্ধতি এখন সাসপেন্ড ফাংশন হতে পারে। b/120241587

API / আচরণগত পরিবর্তন

  • অন্যান্য androidx আর্টিফ্যাক্টের মতো একই নামকরণ অনুসরণ করে আর্টিফ্যাক্ট room-coroutines-এর নাম পরিবর্তন করে room-ktx করা হয়েছে।
  • RoomDatabase-এ beginTransaction, setTransactionSuccessful ও endTransaction-কে runInTransaction ও room-ktx এক্সটেনশন ফাংশন withTransaction-এর জন্য সরিয়ে দেওয়া হয়েছে।

সমস্যার সমাধান

  • SIMPLE টোকেনাইজার ব্যবহার করা হলে টোকেনাইজার আর্গুমেন্ট বাদ দেওয়া হচ্ছিল, সেই সমস্যার সমাধান করা হয়েছে। b/125427014
  • Room-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে প্যারামিটার সহ সাসপেন্ড করা ফাংশন সঠিকভাবে শনাক্ত করা যাচ্ছিল না, প্যারামিটারের ধরন ছিল একটি ইন্টার্নাল ক্লাস। b/123767877
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে INSERT, UPDATE বা DELETE স্টেটমেন্ট সহ ডিফার করা @Query DAO পদ্ধতি মূল থ্রেডে কোয়েরি প্রস্তুত করছিল। b/123695593
  • বিভিন্ন ধরনের সমস্যার সমাধান করা হয়েছে যেখানে Room নির্দিষ্ট কিছু সাসপেন্ড ফাংশনের জন্য ভুল কোড জেনারেট করত। b/123466702 এবং b/123457323
  • জেনারেট করা কোডে, বাতিল করা পদ্ধতির ব্যবহার সঠিকভাবে দমন করা হচ্ছে না এমন একটি সমস্যার সমাধান করা হয়েছে। b/117602586
  • androidx.sqlite-এর আপডেট করা Room নির্ভরতা 1.0.2-এ, যার মধ্যে সঠিকভাবে দুর্নীতিগ্রস্ত ডেটাবেস ম্যানেজ করার সমাধান রয়েছে। b/124476912

পরিচিত সমস্যা

  • Room 2.1.0-alpha05 kotlinx-metadata-jvm আর্টিফ্যাক্টের উপর নির্ভর করে যা বর্তমানে Maven Central-এ উপলভ্য নেই (KT-27991)। আপনার প্রোজেক্ট রিপোজিটরিতে maven { url "https://kotlin.bintray.com/kotlinx/" } যোগ করার মাধ্যমে এই নির্ভরতা সংক্রান্ত সমস্যার সমাধান করা যেতে পারে।

ভার্সন 2.1.0-alpha04

২৫ জানুয়ারি, ২০১৯

নতুন ফিচার

  • @Query-এর সাথে অ্যানোটেট করা DAO পদ্ধতি যাতে INSERT, UPDATE বা DELETE স্টেটমেন্ট আছে, সেগুলি এখন অ্যাসিঙ্ক টাইপ Single, Mayble, Completable ও ListenableFuture রিটার্ন করতে পারে। এছাড়াও, সেগুলি সাসপেন্ড ফাংশনও হতে পারে। b/120227284

API / আচরণগত পরিবর্তন

  • @Transaction অ্যানোটেশন সহ কোনও নন-অ্যাবস্ট্রাক্ট DAO মেথড Single, Mayble, Completable, LiveData বা ListenableFuture-এর মতো কোনও অ্যাসিঙ্ক টাইপ রিটার্ন করলে, Room এখন একটি এরর দেখাবে। যেহেতু ট্রানজ্যাকশন থ্রেড কনফাইন্ড, তাই বর্তমানে Room-এর পক্ষে এমন কোনও ফাংশনের চারপাশে ট্রানজ্যাকশন শুরু ও শেষ করা অসম্ভব যা বিভিন্ন থ্রেডে কোয়েরি পারফর্ম করতে পারে। b/120109336
  • OnConflictStrategy.FAIL এবং OnConflictStrategy.ROLLBACK @Deprecated করা হয়েছে কারণ Android-এর বর্তমান SQLite বাইন্ডিংয়ের সাথে এগুলি প্রত্যাশিতভাবে কাজ করে না। b/117266738

সমস্যার সমাধান

  • DAO পদ্ধতি সাসপেন্ড ফাংশন হলে, Room সঠিকভাবে রিটার্ন টাইপের TypeConverter ব্যবহার করতে না পারার সমস্যার সমাধান করা হয়েছে। b/122988159
  • Room-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে ইনহেরিট করা সাসপেন্ড ফাংশনকে ভুল করে নন-সাসপেন্ড হিসেবে শনাক্ত করা হত। b/122902595
  • একটি বাগ সমাধান করা হয়েছে যেখানে Room একটি @Embedded ফিল্ড প্যারেন্ট ক্লাসে থাকলে এবং একাধিক চাইল্ড ক্লাসে ব্যবহার করা হলে ভুল কোড তৈরি করত। b/121099048
  • beginTransaction() ও endTransaction()-এর মধ্যে DAO সাসপেন্ড ফাংশন ইনভোক করার সময় ডেটাবেস ডেডলক হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/120854786

ভার্সন 2.1.0-alpha03

৪ ডিসেম্বর, ২০১৮

API-তে পরিবর্তন

  • @Fts3/@Fts4-এ FTS tokenizer এখন Enum-এর পরিবর্তে স্ট্রিং নেয়। এটি Room-কে কাস্টম টোকেনাইজার ব্যবহার করার অনুমতি দেয়। বিল্ট-ইন টোকেনাইজার এখনও FtsOptions-এ স্ট্রিং কনস্ট্যান্ট হিসেবে সংজ্ঞায়িত করা আছে। b/119234881

নতুন ফিচার

  • কোরুটিন: DAO মেথড এখন সাসপেন্ড ফাংশন হতে পারে। Room-এ সাসপেন্ড ফাংশন কাজ করানোর জন্য একটি নতুন আর্টিফ্যাক্ট, room-coroutines রিলিজ করা হয়েছে। b/69474692
  • @Insert, @Delete বা @Update দিয়ে অ্যানোটেট করা DAO পদ্ধতি এখন রিটার্ন টাইপ হিসেবে ListenableFuture-কে সাপোর্ট করে। b/119418331

সমস্যার সমাধান

  • @Entity-এর ignoredColumns প্রপার্টিতে কলাম সহ কনস্ট্রাক্টর খোঁজার জন্য Room-এর ভুল প্রচেষ্টা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/119830714
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে Room, DAO পদ্ধতির প্যারামিটারকে তার তৈরি করা ইমপ্লিমেন্টেশনে ফাইনাল হিসেবে চিহ্নিত করত না। b/118015483
  • Room প্রসেসর বিশেষ চিহ্ন সহ কোয়েরিতে কোনও সমস্যার কথা জানানোর সময় ক্র্যাশ করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/119520136
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে Room, IN এক্সপ্রেশনের আর্গুমেন্ট হিসেবে অন্যান্য বিভিন্ন Collection ইমপ্লিমেন্টেশন প্রত্যাখ্যান করবে। b/119884035
  • রুম থেকে ফেরত আসা LiveData-তে একটি সমস্যা সমাধান করা হয়েছে, যেখানে এটি চিরকালের জন্য পর্যবেক্ষণ করা হলে আবর্জনা সংগ্রহ করা হত, যার ফলে এটি আর নতুন ডেটা নির্গত করত না। b/74477406
  • লক কনটেনশন কমাতে RoomDatabase-এর ক্লোজ লক আপডেট করা হয়েছে। b/117900450

Version 2.1.0-alpha02

৩০ অক্টোবর, ২০১৮

নতুন ফিচার

  • @Relation-এ @DatabaseView-এর রেফারেন্স যোগ করার সুবিধা যোগ করা হয়েছে। b/117680932

সমস্যার সমাধান

  • Rx রিটার্ন টাইপ থেকে সাবস্ক্রাইব ও ডিসপোজ করার সময় Room যাতে মূল থ্রেডে ডিস্ক I/O পারফর্ম করে সেই সংক্রান্ত সমস্যার সমাধান করা হয়েছে। b/117201279
  • Kotlin এন্টিটি ক্লাসে কোনও ফিল্ডের জন্য Room উপযুক্ত টাইপ কনভার্টার খুঁজে না পাওয়ার সমস্যা সমাধান করা হয়েছে। b/111404868
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে Room, Kotlin-এর ডিফল্ট মেথড সহ DAO ইন্টারফেস ইমপ্লিমেন্টেশনের জন্য ভুল কোড তৈরি করত, এই মেথডে কোনও আর্গুমেন্ট নেই। b/117527454
  • Room SQLite গ্রামার পার্সার আপডেট করা হয়েছে, পারফর্ম্যান্স সংক্রান্ত সমস্যা সমাধান করা হয়েছে যার ফলে বিল্ড করতে অনেক সময় লাগত। b/117401230

ভার্সন 2.1.0-alpha01

৮ অক্টোবর, ২০১৮

নতুন ফিচার

  • FTS: Room এখন FTS3 বা FTS4 টেবিল ম্যাপিংয়ের সাথে এন্টিটি সাপোর্ট করে। @Entity দিয়ে অ্যানোটেট করা ক্লাসকে এখন @Fts3 বা @Fts4 দিয়ে অতিরিক্ত অ্যানোটেট করে, ম্যাপিং ফুল-টেক্সট সার্চ টেবিল সহ ক্লাস ঘোষণা করা যাবে। আরও কাস্টমাইজেশনের জন্য FTS বিকল্পগুলি অ্যানোটেশনের পদ্ধতির মাধ্যমে উপলভ্য। b/62356416
  • ভিউ: Room এখন @DatabaseView অ্যানোটেশন ব্যবহার করে কোনও ক্লাসকে স্টোর করা কোয়েরি হিসেবে ঘোষণা করার সুবিধা দেয়, এটি ভিউ নামেও পরিচিত। b/67033276
  • Auto Value: Room এখন এন্টিটি ও POJO হিসেবে AutoValue অ্যানোটেট করা ক্লাস ঘোষণা করার সুবিধা দেয়। Room অ্যানোটেশন @PrimaryKey, @ColumnInfo, @Embedded ও @Relation এখন অটো ভ্যালু অ্যানোটেটেড ক্লাসের অ্যাবস্ট্র্যাক্ট পদ্ধতিতে ঘোষণা করা যাবে। মনে রাখবেন যে Room যাতে সঠিকভাবে বুঝতে পারে তার জন্য এই অ্যানোটেশনের সাথে @CopyAnnotations থাকতে হবে। b/62408420
  • অতিরিক্ত Rx রিটার্ন টাইপ সাপোর্ট: @Insert, @Delete বা @Update দিয়ে অ্যানোটেট করা DAO পদ্ধতি এখন Rx রিটার্ন টাইপ Completable, Single<T> ও Maybe<T> সাপোর্ট করে। b/63317956
  • @Relation সহ অপরিবর্তনীয় ধরন: Room-এর আগে @Relation অ্যানোটেট করা ফিল্ড সেট করার উপযুক্ত হতে হত, কিন্তু এখন সেগুলি কনস্ট্রাক্টর প্যারামিটার হতে পারে।
  • enableMultiInstanceInvalidation: একই ডেটাবেস ফাইল ব্যবহার করে একাধিক RoomDatabase ইনস্ট্যান্স জুড়ে বাতিল করার সুবিধা চালু করতে RoomDatabase.Builder-এ একটি নতুন API আছে। এই মাল্টি-ইনস্ট্যান্স বাতিল করার মেকানিজম একাধিক প্রসেস জুড়েও কাজ করে। b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Is a new API in RoomDatabase.Builder to automatically re-create the database if a downgrade happens. b/110416954
  • ignoredColumns: @Entity অ্যানোটেশনে একটি নতুন API যা নাম অনুসারে উপেক্ষা করা ফিল্ডের তালিকা তৈরি করতে ব্যবহার করা যেতে পারে। কোনও এন্টিটিতে ইনহেরিট করা ফিল্ড উপেক্ষা করার জন্য উপযোগী। b/63522075

API / আচরণগত পরিবর্তন

  • RoomDatabase-এ mCallback এবং mDatabase এখন @Deprecated এবং Room-এর পরবর্তী মেজর ভার্সনে সরিয়ে দেওয়া হবে। b/76109329

সমস্যার সমাধান

  • দুটি সমস্যার সমাধান করা হয়েছে যেখানে ইনিশিয়ালাইজেশনের সময় রুম সঠিকভাবে করাপ্ট ডেটাবেস বা ভুল মাইগ্রেশন থেকে রিকভার করতে পারত না। b/111504749 এবং b/111519144
  • Room এখন ডেটা ক্লাসে Kotlin-এর প্রাইমারি কনস্ট্রাক্টর সঠিকভাবে ব্যবহার করবে, এর ফলে ফিল্ডকে vars হিসেবে ঘোষণা করার প্রয়োজন হবে না। b/105769985

ভার্সন 2.0.0

ভার্সন 2.0.0

১ অক্টোবর, ২০১৮

2.0.0-rc01 থেকে কোনও পরিবর্তন না করেই androidx.room 2.0.0 রিলিজ করা হয়েছে।

ভার্সন 2.0.0-rc01

২০ সেপ্টেম্বর, ২০১৮

2.0.0-beta01 থেকে কোনও পরিবর্তন ছাড়াই androidx.room 2.0.0-rc01 রিলিজ করা হয়েছে।

ভার্সন 2.0.0-beta01

২ জুলাই, ২০১৮

API / আচরণগত পরিবর্তন

  • কোথায় কোয়েরি চালানো হবে তা কাস্টমাইজ করার অনুমতি দিতে RoomDatabase.Builder.setQueryExecutor() যোগ করা হয়েছে
  • RxJava2 Observable-এর জন্য সহায়তা যোগ করা হয়েছে
  • জেনারেট করা DAO ও ডেটাবেস প্রয়োগ এখন চূড়ান্ত

সমস্যার সমাধান

  • "cannot find getter for field" সমস্যার মধ্যে ক্লাস/ফিল্ডের নাম উল্লেখ করুন b/73334503
  • RoomOpenHelper-এর ব্যাকওয়ার্ড কম্প্যাটিবিলিটি সংক্রান্ত সমস্যা সমাধান করা হয়েছে, এটি Room-এর পুরনো ভার্সনের সাথে কাজ করে b/110197391

AndroidX-এর আগের ডিপেন্ডেন্সি

Room-এর AndroidX-এর আগের ভার্সনের জন্য, এইসব ডিপেন্ডেন্সি যোগ করুন:

dependencies {
    def room_version = "1.1.1"

    implementation "android.arch.persistence.room:runtime:$room_version"
    annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor

    // optional - RxJava support for Room
    implementation "android.arch.persistence.room:rxjava2:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "android.arch.persistence.room:guava:$room_version"

    // Test helpers
    testImplementation "android.arch.persistence.room:testing:$room_version"
}

ভার্সন 1.1.1

ভার্সন 1.1.1

১৯ জুন, ২০১৮

রুম 1.1.1 ও রুম 1.1.1-rc1 একই রকম।

ভার্সন 1.1.1-rc1

১৬ মে, ২০১৮ আপনি মাইগ্রেশন ব্যবহার করলে, 1.1.0-এর পরিবর্তে Room 1.1.1-rc1 ব্যবহার করার জন্য আমরা অত্যন্ত সাজেস্ট করি।

পোস্ট মাইগ্রেশন ইনিশিয়ালাইজেশন Room সঠিকভাবে ম্যানেজ করতে না পারা সংক্রান্ত সমস্যার সমাধান করা হয়েছে b/79362399

ভার্সন 1.1.0

ভার্সন 1.1.0-beta3

১৯ এপ্রিল, ২০১৮

সমস্যার সমাধান

  • Kotlin POJO, Java-তে সংজ্ঞায়িত একটি রিলেশন এন্টিটিকে রেফার করলে, কম্পাইলেশন সংক্রান্ত সমস্যার সমাধান করুন b/78199923

ভার্সন 1.1.0-beta2

৫ এপ্রিল, ২০১৮

সমস্যার সমাধান

  • Room Rx Single ও Maybe ইমপ্লিমেন্টেশনে থাকা একটি গুরুতর বাগ সমাধান করা হয়েছে, যেখানে এটি নির্ধারিত সময়ের আগেই কোয়েরি রিসাইকেল করত, এর ফলে আপনি রিটার্ন করা Single বা Maybe ইনস্ট্যান্সে ১টির বেশি অবজারভার যোগ করলে সমস্যা হত। b/76031240

  • [RoomDatabase.clearAllTables][ref-clearAllTables] কোনও ট্রানজ্যাকশনের মধ্যে কল করা হলে, এটি ডেটাবেস VACUUM করবে না। b/77235565

ভার্সন 1.1.0-beta1

২১ মার্চ, ২০১৮

API-তে পরিবর্তন

  • API পর্যালোচনা সংক্রান্ত মতামতের ভিত্তিতে, @RawQuery আর কোয়েরি প্যারামিটার হিসেবে String গ্রহণ করে না। আপনাকে [SupportSQLiteQuery][ref-SupportSQLiteQuery] ব্যবহার করতে হবে। (আর্গুমেন্ট সাপোর্ট সহ [SupportSQLiteQuery][ref-SupportSQLiteQuery]-এর ইনস্ট্যান্স সহজে তৈরি করতে [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] দেখুন)।
  • RoomDatabase.Builder-এর [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] পদ্ধতি এখন vararg Integer-এর পরিবর্তে vararg int গ্রহণ করে।

সমস্যার সমাধান

  • [RoomDatabase.clearAllTables][ref-clearAllTables] এখন WAL চেকপয়েন্ট সেট করে এবং VACUUM ডেটাবেস করে অপারেটিং সিস্টেমকে স্পেস ফিরিয়ে দেওয়ার চেষ্টা করে।
  • [@RawQuery][ref-RawQuery] এখন observedEntities প্রপার্টির জন্য যেকোনও Pojo গ্রহণ করে, যতক্ষণ না Pojo তার Embedded ফিল্ড বা Relation-এর মাধ্যমে এক বা একাধিক এন্টিটিকে রেফার করে। b/74041772
  • পেজিং: রুমের DataSource ইমপ্লিমেন্টেশন এখন সঠিকভাবে মাল্টি-টেবিল ডিপেন্ডেন্সি (যেমন, রিলেশন ও জয়েন) ম্যানেজ করে। আগে এগুলি নতুন ফলাফল ট্রিগার করতে বা কম্পাইল করতে পারত না। b/74128314

ভার্সন 1.1.0-alpha1

২২ জানুয়ারি, ২০১৮

নতুন ফিচার

  • RawQuery: এই নতুন API, @Dao পদ্ধতিকে SQL-কে কোয়েরি প্যারামিটার হিসেবে গ্রহণ করার অনুমতি দেয় b/৬২১০৩২৯০, b/৭১৪৫৮৯৬৩
  • fallBackToDestructiveMigrationsFrom: RoomDatabase.Builder-এ এই নতুন API-এর মাধ্যমে কোন স্টার্টিং স্কিমা ভার্সন থেকে ডেস্ট্রাক্টিভ মাইগ্রেশন করা যাবে তা আরও সূক্ষ্মভাবে নিয়ন্ত্রণ করা যায় (fallbackToDestructiveMigration-এর তুলনায়) b/64989640
  • Room এখন শুধু নতুন পেজিং API (alpha-4+) সাপোর্ট করে, এর ফলে পুরনো LivePagedListProvider আর কাজ করে না। নতুন Room আলফা ব্যবহার করতে, আপনাকে পেজিং alpha-4 বা তার পরবর্তী ভার্সন ব্যবহার করতে হবে এবং আপনি যদি এখনও LivePagedListProvider থেকে LivePagedListBuilder-এ পরিবর্তন না করে থাকেন, তাহলে তা করতে হবে।

সমস্যার সমাধান

  • Kotlin Kapt ধরনের জন্য উন্নত সহায়তা। b/69164099
  • ফিল্ডের ক্রম আর স্কিমা বাতিল করে না। b/64290754